首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C代码,回答问题,将解答写在答题纸的对应栏内。 【说明】 n皇后问题描述为:在一个n×n的棋盘上摆放n个皇后,要求任意两个皇后不能冲突,即任意两个皇后不在同一行、同一列或者同一斜线上。 算法的基本思想如下: 将第i个皇
阅读下列说明和C代码,回答问题,将解答写在答题纸的对应栏内。 【说明】 n皇后问题描述为:在一个n×n的棋盘上摆放n个皇后,要求任意两个皇后不能冲突,即任意两个皇后不在同一行、同一列或者同一斜线上。 算法的基本思想如下: 将第i个皇
admin
2021-03-13
34
问题
阅读下列说明和C代码,回答问题,将解答写在答题纸的对应栏内。
【说明】
n皇后问题描述为:在一个n×n的棋盘上摆放n个皇后,要求任意两个皇后不能冲突,即任意两个皇后不在同一行、同一列或者同一斜线上。
算法的基本思想如下:
将第i个皇后摆放在第i行,i从1开始,每个皇后都从第1列开始尝试。尝试时判断在该列摆放皇后是否与前面的皇后有冲突,如果没有冲突,则在该列摆放皇后,并考虑摆放下一个皇后;如果有冲突,则考虑下一列。如果该行没有合适的位置,回溯到上一个皇后,考虑在原来位置的下一个位置上继续尝试摆放皇后……直到找到所有合理摆放方案。
【C代码】
下面是算法的C语言实现。
(1)常量和变量说明
n:皇后数,棋盘规模为n×n
queen[]:皇后的摆放位置数组,queen
表示第i个皇后的位置,1≤queen
≤n
(2)C程序
#include
#define n 4
int queen[n+1];
void Show(){ /* 输出所有皇后摆放方案*/
int i;
printf("(");
for(i=1;i<=n;i++){
printf(" %d",(queen
);
}
printf(")\n");
}
int Place(int j){ /*检查当前列能否放置皇后,不能放返回0,能放返回1*/
int i;
for(i=1;i
if( (1)________ || abs(queen
-queen[j])==(j-i)){
return 0;
}
}
return(2)________;
}
void Nqueen(int j){
int i;
for(i=1;i<=n;i++){
queen[j]=i;
if( (3)________ ){
if(j==n){ /*如果所有皇后都摆放好,则输出当前摆放方案*/
Show()
}else{ /*否则继续摆放下一个皇后*/
(4)________;
}
}
}
}
int main(){
Nqueen(1);
return 0;
}
根据题干说明,填充C代码中的空(1)~(4)。
选项
答案
(1)queen[i]==queen[j]或等价形式 (2)1 (3)Place(i) (4)Nqueen(j+1)
解析
函数Place用于检查当前行j的queen[j]位置能否放置皇后,不能放则返回0,能放则返回1。能放的前提是前j-1行已经放置了互相不冲突的皇后,此时判断第j行的皇后queen[j]是否与前面的皇后有冲突,因此判断if中的两个条件为是否在同一列或同一对斜线。其中,abs(queen
-queen[j])==(j-i)表示两个皇后在同一斜线上,因此(1)中应填同一列,即queen
==queen[j]。在定义函数Place的时候己经注释说明,如果不能放返回0,能放返回1,因此(2)填1。
在函数Nqueen中放置皇后。从第一行第一列开始,每次放置皇后是判断是否可以放置的位置,因此(3)填Place(j)。如果能放且j是最后一行,则得到一个放置方案:如果能放且i不是最后一行,则需要放下一个皇后,因此(4)填写Nqueen(j+1)。这里用到了递归调用,因此没有显式回溯的语句。
转载请注明原文地址:https://kaotiyun.com/show/zoxZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
认真阅读以下基于Windows2003操作系统IPv6的技术说明,根据要求回答问题1至问题4。【说明】由于现有的网络设备大部分都是基于IPv4的,也不可能在短时间内都更新换代来支持IPv6,因此在相对比较长的一段时期内,IPv6网络将和IPv4
A、B、C、D4台主机之间哪些可以直接通信?哪些需要通过设置网关(或路由器)才能通信?请画出网络连接示意图,并注明各个主机的子网地址和主机地址。若要使主机A、B、C、D4台主机在这个网上都能直接相互通信,可采取什么办法?
阅读以下说明和交换机的配置信息,回答问题1~3,将解答填入对应栏内。某公司下设3个部门,为了便于管理,每个部门组成一个VLAN,公司网络结构如图1所示。[交换机Switch1的部分配置信息]Switch1(config)#tinterf
根据该网络的需求,防火墙至少需要(14)个百兆接口和(15)个千兆接口。(14)
文件/etc/sysconfig/network-scripts/eth0用于存储网络配置信息,请根据图2-1填写下面的空缺信息,完成主机的配置。DEVICE=eth0HWADDR=(7)ONBOOT=yesBOOT
阅读以下说明,回答以下问题,将解答填入答题纸对应的解答栏内。【说明】某单位网络拓扑结构如下图所示,该单位.Rotlter以太网接口E0接内部交换机S1,S0接口连接到电信ISP的路由器;交换机S1连接内部的Web服务器、DHCP服务器、
阅读以下说明,回答问题。(2011年上半年下午试题四)[说明]某公司两分支机构之间的网络配置如图3-11所示。为保护通信安全,在路由器router-a和router-b上配置IPSec安全策略,对192.168.8.0/24网段和192.168.
在自治系统内部的各个路由器之间,运行的是内部网关协议IGP。早期的IGP叫作(56),它执行(57)。当网络规模扩大时,该算法传送的路由信息太多,增加了网络负载,后来又出现了执行最短路径优先算法的IGP。按照这种协议,每个路由器向网络中的其他路由器发布(5
The purpose of the requirements definition phase is to produce a clear, complete, consistent, and testable(6)of the technical re
随机试题
2岁男孩,生后即发现有青紫现象,久站喜蹲踞,心脏听诊可在胸骨左缘第2肋间闻及Ⅱ级喷射性杂音,肺动脉第二音减低。
一民工在工地干活,踩到一生锈铁钉,刺破右足,来院就诊。见伤口血已自止,边缘略肿胀,伤处及周围有泥土等污物。宜进行的处理是
下列正确的判断有()
关于基层处理剂施工技术要求,正确的有()。
在已经装订好的记账凭证的封面上,应加盖印章的人员有()。
“生产成本”账户的贷方期末余额表示在产品成本。()
简述家庭教育、社会教育和学校教育相互配合的重要意义.
小端模式下如果从0x60000010开始到0x60000017存放的一个双字为0x123456789ABCDEF0,且R1=0x60000010,则加载指令LDRBR0,[R1]使R0=___________【53】、LDRHR2,[R1,#2]使R2
运行IP协议的Internet可以为其高层用户提供______的、面向无连接的、尽最大努力的数据报投递服务。
Primaryschoolteachers’poor【C1】______ofEnglishandmathsisunderminingtheGovernment’sliteracyandnumeracystrategies,
最新回复
(
0
)