首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 【程序说明】 著名的四色定理指出任何平面区域图均可用4种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。程序中用1~4表示4种颜色。要着色的
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 【程序说明】 著名的四色定理指出任何平面区域图均可用4种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。程序中用1~4表示4种颜色。要着色的
admin
2013-05-11
56
问题
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。
【程序说明】
著名的四色定理指出任何平面区域图均可用4种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。程序中用1~4表示4种颜色。要着色的N个区域用0~N-1编号,区域相邻关系用adj[][]矩阵表示,矩阵的i行j列的元素为1,表示区域i与区域j相邻:矩阵的i行j列的元素为0,表示区域i与区域j不相邻。数组color[]用来存储着色结果,color
的值为区域i所着颜色。
【程序】
#include<stdio.h>
#define N 10
void output(int color[])/*输出一种着色方案*/
{
int i;
for(i=0; i<N; i++)
printf("%4d", color
);
pfintf("\n");
}
int back(int *ip,int color[])/*回溯*/
{
int c=4;
while(c==4){
if(*ip<=0)return 0;
--(*ip);
c= (1);
color[*ip]=-1;
}
return c;
}
/*检查区域i,对c种颜色的可用性*/
int colorOK(int i, int c, int adj[][N], int color[])
{
int j;
for(j=0; j<i; j++)
if((2))return 0;
return 1;
}
/*为区域i选一种可着的颜色*/
int select(int i,int c,int adj[][N], int color[])
int k;
for(k = c; k<=4; k++)
if( (3) )return k;
return 0;
int coloring(int adj[][N])/*寻找各种着色方案*/
{
int color[N], i, c, cnt;
for(i=0; i<N; i++)cotor
=-1;
i=c=0;cnt=0;
while(1){
if((c=(4)==0){
c=back(&i, color);
if(c==0)return cnt;
}else{
(5); i++;
if(i==N){
output(color);
++cnt;
c=back(&i, color);
}else c = 0;
}
}
}
void main()
{
int adj[N][N]={
{0,1,0,1,1,1,1,1,1,1},
{1,0,1,1,0,1,1,1,1,0},
{0,1,0,1,0,1,1,0,1,1},
{1,1,1,0,1,1,0,0,1,1},
{1,0,0,1,0,1,0,0,0,0},
{1,1,1,1,1,0,1,0,0,1},
{1,1,1,0,0,1,0,0,1,0},
{1,1,0,0,0,0,0,0,1,1},
{1,1,1,1,0,0,1,1,0,1},
{1,0,1,1,0,1,0,1,1,0}
};
printf("共有%d组解.\n",coloring(adj));
}
选项
答案
(1) color[*ip] (2) adj[i][j]!=0 && color[j]==c (3) i,k,adj,color (4) select(i,c+1,adj,color) (5) color[i]=c
解析
本题考查著名的着色问题,相对难度较低,用到了回溯法的算法思想。
程序中,数组adj[][]存放所有区域的相邻情况,color[]存放着色方案。
程序中子程序较多,注释中比较清楚地说明了各个子程序的功能。从主函数看起,main函数中给数组adj赋值,即初始化所有区域的相邻情况,然后调用coloring函数。coloring函数是用来寻找各种着色方案的,注意是找所有的着色方案,而不是只找一个解,因此找到一个解后需要进行回溯;另外,当一个方案无法继续为剩余区域着色时也需要回溯。while循环中,是一个if-else结构,else块中也是一个if-else结构,其中if块调用到了output函数,说明找到了一个解,然后进行回溯。可见外层else块是可以继续分配颜色,空(5)处应该是保存着色方案,故空(5)应填color
=c。外层if块是尝试着色失败,进行回溯,故空(4)处应该尝试为区域i着色,应该调用select函数,又可选的初始颜色是c+1号颜色,故空(4)应填select(i, c+l,adj,color)。
函数select函数是用来为区域i选一种可着的颜色,依次选定一种颜色,然后判断是否可行,若可行返回颜色号,若不可行返回0。显然需要调用函数colorOK函数,对着函数原型易得,空(3)应填“i,k,adj,color”。
函数colorOK是用来判断区域i是否可着c号颜色。根据着色规则:相邻区域不能着相同的颜色”,即与区域i相邻的区域不能着c种颜色。空(2)条件成立返回0,结合函数select中的调用,返回0表示不可用,故空(2)应填“adj
[j]!=0 && color[j]==c”。
最后来看back函数,空(1)是相对比较难的一空。其中形参ip指向记录当前考查区域号的变量。用指针形参是因为回溯时函数需要修正当前区域号。整个回溯过程是一个循环,如果当前区域*ip已选第四号颜色(颜色已经用尽),即while循环中的条件成立,则需要回溯。回溯时,若发现当前区域*ip已经是0号区域,当然不能再回溯了,函数返回0值,表示已经穷尽了所有可能的方案;否则,当前区域号减1,取出*ip区域的着色方案,并置*ip为未着色。 *ip的着色方案存储于color[*ip]中,如果*ip区域的着色方案不是最后一种颜色,则回溯结束,函数返回该区域原来的着色方案,让*ip区域选用编号更大的颜色。故空(1)应填“color[*ip]”。
转载请注明原文地址:https://kaotiyun.com/show/X1RZ777K
本试题收录于:
软件设计师上午基础知识考试题库软考中级分类
0
软件设计师上午基础知识考试
软考中级
相关试题推荐
在相隔2000km的两地间通过电缆以4800b/s的速率传送3000比特长的数据包,从开始发送到接收完数据需要的时间是(1)。如果用50kb/s的卫星信道传送,则需要的时间是(2)。(2009年下半年试题)(1)
10个9.6kb/s的信道按时分多路复用在一条线路上传输,如果忽略控制开销,在同步TDM情况下,复用线路的带宽应该是________;在统计TDM情况下,假定每个子信道具有30%的时间忙,复用线路的控制开销为10%,那么复用线路的带宽应该是________
下面关于曼彻斯特编码的叙述中,错误的是__________。(2010年下半年试题)(1)
ICMP协议的功能包括(1),当网络通信出现拥塞时,路由器发出ICMP(2)报文。(2012年上半年试题)(2)
采用ADSL虚拟拨号接入方式中,用户端需要安装__________软件。(2011年上下半年试题)
由我国信息产业部批准发布,在信息产业部门范围内统一使用的标准,称为__________。(2005年上半年试题)
tracert命令通过多次向目标发送皿来确定到达目标的路径,在连续发送的多个IP数据包中,(2)字段都是不同的。(2009年上半年试题)(2)
为了进行差错控制,必须对传送的数据帧进行校验,由接收方检测数据传输是否出现差错。常用的差错控制方法是(41)。要检测接收的数据是否有错,最常用的方法是(42)。汉明码是一种纠错码,采用汉明码纠正一位差错,若信息位为7位,则冗余位至少应为(43), CRC-
根据题干的[说明]及图1-11、图1-12的相关信息,类商品除了售出和缺货登记操作之外,还应具有哪些主要操作?(请使用[说明]中给出的词语回答问题)识别关联的多重度是面向对象建模过程中的一个重要步骤。请根据说明中给出的描述,将图1-11中(1)
未经压缩的数字音频数据传输率的计算公式为(59),语音信号的带宽为300~3400Hz,采用频率为8kHz,量化精度为8位,单声道输出,则每秒钟的数据量为(60)。(59)
随机试题
自2012年年初以来,A公司出现不能清偿到期债务且资产不足清偿全部债务的情况。2012年12月l7日,人民法院经审查裁定受理了A公司的破产申请,并指定了管理人。在该破产案件中,存在下述情况:(1)2011年10月8日,B公司向C银行借款1000万元,期
Wits值用于分析
患者,女性,33岁,停经8个月,第一胎,阴道大量流血3小时入院。出血时不伴有腹痛及阴道流水。既往有2次人流史,药物流产1次。查体:P120次/分,BP87/56mmHg,神清,轻度贫血貌,宫高30cm,腹围95cm,胎位LSA,FHR150次/分。患者
[2010年,第86题]在电动机的继电接触控制电路中,具有短路保护、过载保护、欠压保护和行程保护,其中,需要同时接在主电路和控制电路的保护电器是()。
同时放散热、蒸汽和有害气体,或仅放散密度比空气小的有害气体的工业建筑,除设局部排风外,宜在上部区域进行自然或机械的全面排风,其排风量设计()。
呆账发生后的处理原则包括()。
下列各项说法中,正确的有()。
科学家们发现,一种曾在美洲普遍栽培的经济作物比目前的主食作物如大米和小麦,含有更高的蛋白质成分。科学家们宣称,推广这种作物,对那些人口稠密、人均卡路里和蛋白质摄入量均不足的国家是很有利的。下列哪项如果为真,最能对科学家的宣称产生质疑?
在人类历史上,原始社会的经济关系产生了原始共产主义道德,封建社会的经济关系产生了封建主义道德,资本主义社会的经济关系产生了资本主义道德,社会主义社会的经济关系产生了社会主义道德。这说明()
DictationListentothepassage.Forquestions21~25,fillintheblankswiththeexactwordsorphrasesyouhear.Therei
最新回复
(
0
)