八皇后C++

来源:互联网 发布:编程机器人安卓版中文 编辑:程序博客网 时间:2024/05/19 08:24
// Note:Your choice is C++ IDE//201108201730#include <iostream>using namespace std;int num[9][9];int row[9][9];void search(int);int check(int,int);int solution(int);int main(){    search(1);    return 0;}void search(int i){static int ans=1;int result = solution(i);if(i==9){for(int cal2=1; cal2<9; cal2++)for(int cal1=1; cal1<9; cal1++)if(num[cal2][cal1]==1)cout<<cal2<<","<<cal1<<" ";cout<<"answer:"<<ans++<<endl;}for(int a=1; a<result; a++){for(int b=1; b<9; b++){if(b == row[i][a]){num[i][b] = 1;}}search(i+1);for(int c=1; c<9; c++){num[i][c] = 0;}}}int solution(int i){int count = 1;for(int a=1; a<9; a++){if(check(i,a)){row[i][count] = a;count++;}}return count;}int check(int i, int j){int abc = 1;for(int a=1; a<9; a++)if(num[i][a] == 1)abc = 0;for(int b=1; b<9; b++){if(num[b][j] == 1)abc = 0;}for(int c=i,d=j; c<9 && d<9; c++,d++){if(num[c][d] == 1)abc = 0;}for(int e=i,f=j; e>0 && f>0; e--,f--)if(num[e][f] == 1)abc = 0;for(int g=i,h=j; g<9 && h>0; g++,h--)if(num[g][h] == 1)abc = 0;for(int k=i,l=j; k>0 && l<9; k--,l++)if(num[k][l] == 1)abc = 0;return abc;}


原创粉丝点击