八皇后问题,C++实现
2012-04-26 23:32
603 查看
(1)递归方法
//八皇后问题递归实现,跟求全排列的思想类似,全排列+剪枝; //10000000 //01000000 //00100000 //00010000 //00001000 //00000100 //00000010 //00000001 相当于将这八个数字串用来排列,使其满足八皇后的条件,1代表皇后所在位置 #include <iostream> #include <vector> #include <algorithm> using namespace std; vector<unsigned char> array; int cnt=0; bool flag=false; void findqueen(unsigned char *X,int first,int num) { if (num<=0) { ++cnt; return ; } for (int i=first;i<first+num;++i) { flag=false; swap(X[first],X[i]); for (int k=0;k<first;++k) //每次判断当前插入的串与之前排好的串是否冲突,X[first]为当前串 { if (X[k]>X[first]) { if ((X[k]>>(first-k))==X[first]) { flag=true; break; } } else { if ((X[k]<<(first-k))==X[first]) { flag=true; break; } } } if (flag) //若冲突就尝试下一个循环,把后面的串换到当前位置 { swap(X[first],X[i]); continue; } findqueen(X,first+1,num-1); swap(X[first],X[i]); } } int main() { unsigned char X[8]={128,64,32,16,8,4,2,1}; //int way[8]; findqueen(X,0,8); cout<<cnt<<endl; //cout<<(X[5]<<1)<<endl; //cout<<X[5]<<endl; return 0; }
相关文章推荐
- 八皇后问题求解----C++实现
- C++实现八皇后问题
- C++简单实现八皇后问题
- 八皇后问题C++泛型算法实现
- 八皇后问题的c++实现
- 八皇后问题C++实现
- 八皇后问题java实现
- c++链表实现队列,深搜加宽搜,加模版类实现迷宫问题;
- 最大子数组问题-暴力求解-c++代码实现及运行实例结果
- C++组合问题的简单实现
- C++简单实现八皇后
- 分苹果问题的C++和Python实现
- 字母排序问题(c++实现)
- 八皇后问题的实现
- 【高级算法】禁忌搜索算法解决3SAT问题(C++实现)
- 关于C++中类的成员函数实现的位置问题
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- 雇佣问题原址排列给定数组(randomize In Place)-c++代码实现及运行实例结果
- 八皇后问题三种实现
- 流水线调度最优问题(装配线调度问题)动态规划 O(n)时间(线性时间)C++实现