深搜最基础题---全排列And组合数
2024-10-18 22:35:35
这个是理解标记和取消标记,用一个vis数组来标记
全排列代码:
#include <stdio.h> int a[];
int vis[];
int n;
void dfs(int step)//step是当前已经进去排列的个数
{
if (step == n)//如果找到n个之后,打印一次
{
for (int i = ; i < n; i++)
printf("%d ", a[i]);
puts("");
return ;
}
for (int i = ; i <= n; i++)
{
if (vis[i] == )//排列中没有此数字,就将它加入到排列中
{
vis[i] = ;
a[step] = i;
dfs(step + );
vis[i] = ;
}
}
}
int main()
{
while (scanf("%d", &n) == )
{
dfs();
}
return ;
}
组合数代码(NYOJ-32):
#include <stdio.h>
#include <string.h> int n, r;
int a[];
int vis[];
void dfs(int step)
{
if (step == r + )
{
for (int i = ; i <= r; i++)
printf("%d", a[i]);
puts("");
return ;
}
for (int i = n; i > ; i--)
{
if (vis[i] == && i < a[step - ])//满足逆序
{
vis[i] = ;
a[step] = i;
dfs(step + );
vis[i] = ;
}
}
}
int main()
{
a[] = ;
while (scanf("%d %d", &n, &r) == )
{
memset(vis, , sizeof(vis)); dfs();
} return ;
}
最新文章
- zookeeper心跳机制流程梳理
- UITabBarButton 点击失效问题
- linux+php+apache web调用python脚本权限问题
- onMeasure流程解析
- ASP代码审计 -4.命令执行漏洞总结
- 打包解决方案后,安装时提示只能在IIS5.1以上运行解决方法
- 使用Chef管理windows集群 | 运维自动化工具
- LabelMe图像数据集下载
- DIV布局之道三:DIV块的覆盖,DIV层遮盖其他DIV
- java Date获取 年月日时分秒
- Floyd算法应用-医院选址问题
- C# servicestack.redis 互通 java jedis
- 安装vmware tool时出错
- ESP-01S刷ESPEasy固件,接入HA
- Shadow Properties之美(一)【Microsoft Entity Framework Core随笔】
- Hdoj 基本输入输出8道(1089-1096)
- 8、Django的模型层(2)
- IDEA maven项目下测试mybatis例子,使用mappper class或package引入mapper映射文件,总是报错Invalid bound statement(所有配置完全正确)
- How to merge Scala Lists
- linux下redis的安装及配置启动
热门文章
- vim 支持gb2312
- [Ext JS 4] 实战之Grid, Tree Gird 添加按钮列
- When Colon Scripting is comming(JavaScript语法扩充)
- angularjs现学现记之—$apply()和$digest()
- 手写 title 提示
- JS 操作Dom节点之CURD
- 搬瓦工搭建VPN
- 2、vs2012无法从模型更新到数据库的问题
- Installshield更新时,新加dll未拷贝至安装目录问题完美解决【原创】
- SCALA常规练习B