第12课-单元测评(五)组合题T2
2025-11-14 20:17:40
发布于:浙江
组合题 T2
在一个 8*8 的国际象棋棋盘上放置 8 个皇后,使得这 8 个皇后两两均不在同一行、同一列、同一条对角线上,求合法的方案数。
试补全程序
#include<stdio.h>
#include<stdlib.h>
const int maxn = 11;
int n, P[maxn], hashTable[maxn] = { false };
int count = 0;
void generateP(int index) {
if (index == _①__) {
count++;
return;
}
for (int x = 1; x <= n; x++) {
if (_②__ == false) {
bool flag = true;
for (int pre = 1; pre < index; pre++) { //遍历之前的皇后
if (abs(index - pre) == _③__) {
flag = false;
break;
}
}
if (flag) {
P[index] = x;
hashTable[x] = true;
generateP(_④__);
_⑤__
}
}
}
}
int main() {
n = 8;
generateP(1);
printf("%d", count);
return 0;
}
(1)①处应填()
A.n
B.n+1
C.n-1
D.8
正确答案:
B
答案解析:
B,当放好 8 个皇后,方案数加一,然后返回。
(2).②处应填()
A.x
B.P[x]
C.hashTable[x]
D.count
正确答案:
C
答案解析:
C,这里是在判断第 x 列有没有放置皇后。
(3).③处应填()
A.abs(x - P[pre])
B.x-P[pre]
C.P[pre]-x
D.abs(x)
正确答案:
A
答案解析:
A,这里是在判断对角线是否有皇后
(4).④处应填()
A.h+1
B.n+1
C.count+1
D.index+1
正确答案:
D
答案解析:
D,去在下一行放下一个皇后。
(5).⑤处应填()
A.P[index] = 0
B.hashTable[x] = true
C.hashTable[x] = false
D.P[index]=1
正确答案:
C
答案解析:
C,在这里回溯,要将第 x 列标记为没有放置皇后
答案:BCADC
全部评论 1




2025-11-14 来自 浙江
2




2025-11-14 来自 浙江
2HH
2025-11-14 来自 浙江
0就你,盗我名字
2025-11-14 来自 浙江
0

















有帮助,赞一个