C++ 输出全排列 简单递归 N皇后问题

来源:互联网 发布:淘宝商城家具沙发 编辑:程序博客网 时间:2024/05/24 04:18

做C++程序题需要用到1-9的全排列,然而比较菜还不能熟练地写递归,在网上找了几个全排列算法又不太适合自己的程序,所以我把前几天做过的N皇后问题的递归算法改进了一下,使其可以输出全排列,具体算法如下:


#include <iostream>using namespace std;#define max 4int n;int a[max]; //记录排序后的数字串 int Pailie(int pos){for(int i = 0; i < pos - 1; i++)  //检测a[pos - 1]位置上是否与已有的数字重复,若重复则回溯{if(a[pos - 1] == a[i])return 0;}if(pos == max)   //若已经得到一个全排列,就把它输出{for(int i = 0; i < max; i++)cout<<a[i];cout<<endl;return 0;}for(int i = 1; i <= max; i++){a[pos]=i;Pailie(pos + 1);    //放下一个数字}} int main(){Pailie(0);return 0;}

缺点是时间复杂度较大。


其它算法:http://blog.csdn.net/a358463121/article/details/45543879

2n皇后解法:http://www.2cto.com/kf/201403/285903.html



0 0