时间限制: 1000 ms 内存限制: 65536 KB
提交数: 31439 通过数: 11591
【题目描述】
在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方。
【输入】
(无)
【输出】
按给定顺序和格式输出所有八皇后问题的解(见样例)。
【输入样例】
(无)
【输出样例】
No. 1
1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0
No. 2
1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0
...以下省略
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 10;
int ans, a[N];
void print() {
printf("No. %d\n", ++ans);
for (int i = 1; i <= 8; i++) {
for (int j = 1; j <= 8; j++)
if (a[j] == i)printf("1 ");
else printf("0 ");
printf("\n");
}
}
bool check(int x, int d) {
for (int i = 1; i < d; i++) {
if (a[i] == x || x - a[i] == d - i || x - a[i] == i - d)
return 0;
}
return 1;
}
void solve(int d) {
if (d == 9) {
print();
return;
}
for (int i = 1; i <= 8; i++) {
if (check(i, d)) {
a[d] = i;
solve(d + 1);
}
}
}
//
NOIP
链接:https://pan.baidu.com/s/1llWbXd7yTt_rRExeIK1yGQ?pwd=bvdw
提取码:bvdw
python
链接:https://pan.baidu.com/s/1rzMjwqQcDPBRw14H-14KVA?pwd=316p
提取码:316p
scratch
链接:https://pan.baidu.com/s/1AIo45TpkHTTF956yH7RjwA?pwd=xe73
提取码:xe73
int main() {
solve(1);
return 0;
}
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行