这个是理解标记和取消标记,用一个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 ;
}

最新文章

  1. zookeeper心跳机制流程梳理
  2. UITabBarButton 点击失效问题
  3. linux+php+apache web调用python脚本权限问题
  4. onMeasure流程解析
  5. ASP代码审计 -4.命令执行漏洞总结
  6. 打包解决方案后,安装时提示只能在IIS5.1以上运行解决方法
  7. 使用Chef管理windows集群 | 运维自动化工具
  8. LabelMe图像数据集下载
  9. DIV布局之道三:DIV块的覆盖,DIV层遮盖其他DIV
  10. java Date获取 年月日时分秒
  11. Floyd算法应用-医院选址问题
  12. C# servicestack.redis 互通 java jedis
  13. 安装vmware tool时出错
  14. ESP-01S刷ESPEasy固件,接入HA
  15. Shadow Properties之美(一)【Microsoft Entity Framework Core随笔】
  16. Hdoj 基本输入输出8道(1089-1096)
  17. 8、Django的模型层(2)
  18. IDEA maven项目下测试mybatis例子,使用mappper class或package引入mapper映射文件,总是报错Invalid bound statement(所有配置完全正确)
  19. How to merge Scala Lists
  20. linux下redis的安装及配置启动

热门文章

  1. vim 支持gb2312
  2. [Ext JS 4] 实战之Grid, Tree Gird 添加按钮列
  3. When Colon Scripting is comming(JavaScript语法扩充)
  4. angularjs现学现记之—$apply()和$digest()
  5. 手写 title 提示
  6. JS 操作Dom节点之CURD
  7. 搬瓦工搭建VPN
  8. 2、vs2012无法从模型更新到数据库的问题
  9. Installshield更新时,新加dll未拷贝至安装目录问题完美解决【原创】
  10. SCALA常规练习B