标签:step i++ break clu std == ret 递归 int
#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; }
标签:step i++ break clu std == ret 递归 int
原文地址:http://www.cnblogs.com/masterchd/p/6683108.html