Q8.8

来源:互联网 发布:aoi数据报告ppt模板 编辑:程序博客网 时间:2024/04/29 11:57
//8皇后问题 #include <iostream>using namespace std;int c[10];          //c[i]对应第i行的棋子放在第几列 int num = 0;void print(){for(int i = 0; i < 8; ++i){for(int j = 0; j < 8; ++j){if(j == c[i])cout << "1 ";elsecout << "0 ";}cout << endl;}cout << endl;}void dfs(int r)                   // r 代表这次处理第几行的 {if(r == 8){print();num++;return;}for(int i = 0; i < 8; ++i){c[r] = i;                         // 第r行随便选一个值 bool isok = true;for(int j = 0; j < r; ++j)        //在此基础上,试,跟前r - 1行有冲突就试下一个 {if(c[j] == c[r] || c[j] - c[r] == j - r || c[j] - c[r] == r - j){isok = false;break;}}if(isok)dfs(r + 1);}}int main(void){dfs(0);cout << num << endl;return 0;}

0 0
原创粉丝点击