8皇后问题 c++

来源:互联网 发布:深信服上网行为js 编辑:程序博客网 时间:2024/05/23 20:15
#include
using namespace std;
#include
#include
int Q[8];
int kn = 0;

void print()
{
cout<<"第"<<kn<<"种"<<endl;
for(int i = 0; i < 8; i++)
{
switch(Q[i])
{
case 0:
cout<<"米一一一一一一一"<<endl;
break;
case 1:
cout<<"一米一一一一一一"<<endl;
break;
case 2:
cout<<"一一米一一一一一"<<endl;
break;
case 3:
cout<<"一一一米一一一一"<<endl;
break;
case 4:
cout<<"一一一一米一一一"<<endl;
break;
case 5:
cout<<"一一一一一米一一"<<endl;
break;
case 6:
cout<<"一一一一一一米一"<<endl;
break;
case 7:
cout<<"一一一一一一一米"<<endl;
break;
}
}
cout<<endl;
}

int test(int i){
       int k;

       for(k = 0; k < i; k++){
              if((abs(Q[k] - Q[i]) == abs(k- i)) || Q[k] == Q[i]){ 
                     return0;
              }
       }
       return 1; 
}

void putNode(int i){
       if(i > 7){
              kn++;
              print();
              return ;
       }
       else{
              int k;
              for(k = 1; k <= 8;k++){
                     Q[i] =k;
                    if(test(i)){
                           //Q[i] = k;
                           putNode(i+1);
                     }
              }
       }
}

int main(){
       putNode(0);
      cout<<"一共有"<<kn<<"种"<<endl;
       return 0;
}
                              
0 0
原创粉丝点击