全排列
2016-03-11 01:46
239 查看
全排列等价于:将N个牌放到N个盒子中
#include<iostream> using namespace std; int a[10],book[10],n;//全局变量默认初始化为0 ,book标记是否牌在手中 void dfs(int step)//step表示现在站在第几个盒子面前 { int i; if(step==n+1)//如果站在n+1个盒子面前,表示前面的n个盒子都已经放好了 { for(i=1;i<=n;i++) cout<<a[i]; cout<<endl; return ;//返回之前的一步(最近一次调用dfs的地方) 注意在走完所有的盒子时候step==n+1一定立刻return; } for(i=1;i<=n;i++) { if(book[i]==0)//表示第i个牌仍在手 { a[step]=i;//将i号扑克牌放入第step个盒子中 book[i]=1;//表示第i个扑克牌不在手上了 dfs(step+1);//第step个盒子放好牌,接下来走到下一个盒子面前 book[i]=0;//非常重要的一步,一定要将刚才尝试的扑克牌收回,才能进行下一次尝试</span>。 } } } int main() { cin>>n; dfs(1); //首先站在第1个盒子面前</span> return 0; }
相关文章推荐
- 阶段计划
- kernel 中的红黑树
- 我为什么从Angular转向React?
- 搭建linux服务器之Vim配置
- Clang 宏定义初探(二)
- JavaScript学习笔记(九)—— JS 理解闭包
- hadoop 排序
- 判断当前应用程序处于前台还是后台 ANDROID
- ELM的算法及伪代码
- [并查集] hdu1272 小希的迷宫
- 我与小娜(33):AlphaGo又胜一局
- C++ Exceptional Item 20 Class Mechanics
- Clang 宏定义初探(一)
- Remove Invalid Parentheses
- 多线程实现三种方法
- 组合模式
- 归并排序--Java实现
- 接口的使用
- 通过寄生组合式继承创建js的异常类
- ZOJ 1094 Matrix Chain Multiplication