递归---n皇后问题
来源:互联网 发布:电子黑板软件 编辑:程序博客网 时间:2024/05/17 09:04
感谢提供n皇后递归解法的那位大牛。。。
#include<iostream>using namespace std;#define N 20 int q[N]; //各皇后所在的行号int count = 0; //统计解的个数void print(int n)//输出一个解{ int i,j; count++; cout<<"第"<<count<<"个解:"; for(i=1;i<=n;i++) cout<<"("<<i<<","<<q[i]<<")"; cout<<endl; for(i=1;i<=n;i++) //行 { for(j=1;j<=n;j++) //列 { if(q[i]!=j) cout<<"0"; else cout<<"X"; } cout<<endl; }}//检验第i行的k列上是否可以摆放皇后int find(int i,int k) { int j=1; while(j<i) //j=1~i-1是已经放置了皇后的行 { //第j行的皇后是否在k列或(j,q[j])与(i,k)是否在斜线上 if(q[j]==k ||abs(j-i)==abs(q[j]-k)) return 0; j++; } return 1;}//放置皇后到棋盘上void place(int k,int n) { int j; if(k>n) print(n); else { for(j=1;j<=n;j++) //试探第k行的每一个列 { if(find(k,j)) { q[k] = j; place(k+1,n); } } }} int main(void){ int n; cout<<"请输入皇后个数:"; cin>>n; cout<<endl; cout<<n<<"皇后情况:"; place(1,n); cout<<"共有"<<count<<"种不同的排列"<<endl; system("pause"); return 0;}
阅读全文
0 0
- n皇后问题【递归】
- 递归 N皇后问题
- N皇后问题 (递归)
- 递归---n皇后问题
- n皇后问题--递归回溯
- 递归实现n皇后问题
- N皇后问题(递归)
- HDU2553:N皇后问题【递归】
- N皇后问题递归回溯
- N皇后问题(递归做法)
- C递归的N皇后问题.
- 递归求解N皇后问题(c语言)
- 递归法算n皇后问题
- n皇后问题java递归实现
- n皇后问题【非递归回溯】
- 非递归求N皇后问题
- 递归与迭代法求解N皇后问题
- N皇后问题(递归法)
- 有史以来最全的前端学习方法
- easyui的datagrid修改一行信息后,更新本行
- echarts重复加载
- 在OpenGL中向shader传递信息
- myeclipse web项目导入eclipse中运行解决办法
- 递归---n皇后问题
- thrift: error while loading shared libraries: libthriftc.so.0: cannot open shared object file: No su
- JDK常用监控和故障处理工具
- SQL日常函数
- 银行和企业奋力打击Bash Shellshock 漏洞
- easyui选中行删除后,无法释放选中状态
- js中正则表达式的理解(一)
- 双十一只是在搞噱头么?看看ABBYY FineReader就知道了
- matlab 反复激活 许可证到期 解决方法