#include<stdio.h>
int a[10],book[10],n;
//这里还有需要注意的地方C语言全局变量默认为0 void dfs(int step){ //此时在第step盒子面前,需要往里面放第i张扑克牌
int i;
if(step==n+1){ //这里说明前面的n个盒子已经放好了,这是dfs结束的标志
for(i=1;i<=n;i++)
printf("%d",a[i]);
printf("\n"); return ;
/*
注意这个 return 它的作用不是返回主函数,而是返回上一级的dfs函数 例:如果此时是 dfs(5),遇到这个 return 就会回到上一级的 dfs函数
也就是dfs(4),但此时dfs(4)的大部分语句已经执行了,只需要接着执行 book[i]=0
然后继续进入for循环进入下一次的 dfs函数,直到结束。
*/ }
for(int i=1;i<=n;i++){
if(book[i]==0){ //说明i号扑克牌还在手里,需要放入step号盒子
a[step]=i;//将i号扑克牌放到第step个盒子中
book[i]=1;//此时i号扑克牌已经被使用
dfs(step+1);
/*注意这里是自己调用自己,表示此时走到了第step+1个盒子面前*/
book[i]=0;
/*book[i]=0表示dfs调用结束了,换句话说就是扑克牌已经全部放完了
需要按照顺序将扑克牌收回,重新放,也就是前面所说的
*/
}
}
return;//这里表示这一级别的dfs函数已经结束了,返回上一级 dfs函数 }
int main(){
scanf("%d",&n);
dfs(1); //dfs函数的开始
return 0;
}

  

最新文章

  1. centos6字符
  2. MAC显示文件夹路径
  3. linux 排序命令sort
  4. swifter技巧(100)
  5. select case when
  6. POJ C程序设计进阶 编程题#3: 发票统计
  7. BZOJ 1191: [HNOI2006]超级英雄Hero 二分匹配
  8. python-集合(第二篇(七):集合)
  9. http缓存与cdn相关技术
  10. Linux 显示权限
  11. 使用redis构建文章投票系统
  12. FFmpeg and x264 Encoding Guide
  13. POJ3094 Quicksum
  14. InfluxDB服务器启动流程
  15. vue路由传参的三种基本方式
  16. 把svn上的mycelipse导到本地的eclipse中【原】
  17. 深入理解 RecyclerView 系列之:ItemDecoration
  18. matplotlib画堆叠条形图
  19. 使用RecyclerView打造Gallery
  20. Structs复习 OGNL

热门文章

  1. 比年轻更年轻,快看能否接棒B站?
  2. 除PerfDog之外,还有什么性能测试工具。
  3. ThinkCMF5.1主要特性
  4. PHP中操作任意精度大小的GMP扩展学习
  5. 一起学习PHP中GD库的使用(三)
  6. Centos6.8阿里云linux系统下配置LAMP运行环境-mysql5.6
  7. P4643-[国家集训队]阿狸和桃子的游戏【结论】
  8. 服务器内部模拟Http请求
  9. mqtt网关服务器连接阿里云关联物模型
  10. Kettle学习笔记(二)— 基本操作