首页 > 代码库 > N皇后问题
N皇后问题
#include <iostream> #include <cmath> using namespace std; int queenpos[100];//设置数组存放每一行皇后的位置,下标是行数-1,值是列数 int n;//n皇后问题 void queen(int k)//皇后N问题 { if(k==n) { for(int i=0;i<n;i++)//条件满足,循坏输出 cout<<queenpos[i]+1<<" "; cout<<endl; return;//一定要有return; } for(int i=0;i<n;i++) { int j; for(j=0;j<k;j++) { if(queenpos[j]==i||abs(queenpos[j]-i)==abs(k-j))//it is the most important step; break;//判断行数不同,列数一定不同,K就是,abs(queenpos[j]-i)==abs(k-j)用来判断对角线 } if(j==k) { queenpos[k]=i; queen(k+1);//递归调用、、 } } } int main() { cin>>n; queen(0); return 0; }
N皇后问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。