n皇后问题
来源:互联网 发布:淘宝网夏季中年女装 编辑:程序博客网 时间:2024/05/16 08:23
用回溯法解决
q[i]表示第i行皇后所在的列下标
#include <iostream>using namespace std;void search(int *p , int n , int cur , int* count , int* node){ (*node)++ ; if(cur == n ){ (*count)++; cout<<*count<<"th solution:"<<endl ; for(int i=0 ; i != n ; i++) cout<<p[i]<<" "<<flush ; cout<<endl ; return ; } for(int i = 0 ; i != n ; i++){ p[cur] = i ; int ok = 1 ; for(int j = 0 ; j != cur ; j++) if(p[j] == p[cur] || j+p[j] == cur+p[cur] || j-p[j] == cur - p[cur]){ ok = 0 ; break ; } if(ok == 1 ) search( p , n , cur+1,count , node) ; }}int n_queen( int n , int* node ){ int* p = new int[n] ; int count = 0 ; int *q = &count ; search(p , n , 0 , q , node) ; delete[] p ; return count ;}int main(){ int n ; int m ; int *node = &m ; cout<<"input n : "<< flush ; while(cin>>n){ m = 0 ; if(n<2) cout<<" n should not less than 2 "<<endl; else{ cout<<"the count of "<<n<<" queens problem's solution is : "<<n_queen(n ,node )<<endl ; cout<<"the count of "<<n<<" queens problem's nodes is : "<<m<<endl ; } cout<<"input n : "<< flush ; } return 0;}
0 0
- N*N皇后问题
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- N 皇后问题
- N皇后问题
- N皇后问题算法
- N 皇后问题
- N皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- N皇后问题优化
- N皇后问题
- n皇后问题
- N皇后问题
- Spring学习总结(一)
- NOIP2016提高A组五校联考2总结
- 405. Convert a Number to Hexadecimal
- Android小项目之学生管理系统(附源码)
- [POJ]1970 The Game (DFS搜八连通的连通块)
- n皇后问题
- U-boot2010代码框架
- 【AC自动机】目录
- 信息流zt_使用json参数拼接sql语句
- 剑指offer:从1到n整数中1出现的次数(java)
- 大数据平台架构收集和整理
- hdu5914 构造
- 计算逆矩阵
- C1GridView1 AllowAutoSort 自动排序