八皇后问题总结

来源:互联网 发布:MAC玩网游 编辑:程序博客网 时间:2024/06/06 14:18
#include<iostream>#include<cmath>#include<vector>using namespace std;class Solution {public:vector<int> a;//vector<vector<string> > s_total;void init(int n){a.resize(n);for(int i=0;i<n;i++){a[i]=-1000;}}/*void print(int n){vector<string> s;for(int i=0;i<n;i++){string now_s="";for(int j=0;j<n;j++){if(a[i]==j){now_s=now_s+"Q";//cout<<"Q";}else{now_s=now_s+'.';//cout<<".";}}s.push_back(now_s);//cout<<now_s;//cout<<endl;}//cout<<endl;s_total.push_back(s);}*/int vaild(int row,int col){for(int i=0;i<a.size();i++){if(a[i]==col||abs(i-row)==abs(a[i]-col)){return 0;}}return 1;}int queue(int row){int n=0;int i=0;int j=0;while(i<row){while(j<row){if(vaild(i,j)==1){a[i]=j;j=0;break;}else{j++;}}if(a[i]==-1000){if(i==0)  break;else{i--;j=a[i]+1;a[i]=-1000;continue;}}if(i==row-1){//cout<<"-------------------------------------"<<endl;n++;//print(row);j=a[i]+1;a[i]=-1000;continue;}i++;}return n;}   int totalNQueens(int n) {        int sum=0;        if(n==0)        {        return 0;        }        else        {        init(n);        sum=queue(n);      return sum;                }            }};int main(){int n;cin>>n;Solution s1;s1.solveNQueens(n);return 0;} 

0 0