首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 【程序说明】 著名的四色定理指出任何平面区域图均可用4种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。程序中用1~4表示4种颜色。要着色的
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 【程序说明】 著名的四色定理指出任何平面区域图均可用4种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。程序中用1~4表示4种颜色。要着色的
admin
2013-05-11
29
问题
阅读下列程序说明和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
软件设计师上午基础知识考试
软考中级
相关试题推荐
在SNMP管理模型中,关于管理信息库MIB的说法,正确的是(1)。SNMP实现管理功能的方式是(2)。SNMP网络管理模型中关于管理代理与委托代理的说法正确的是(3)。SNMP将一个值存储到指明变量中去使用(4)命令,而有关get操作命令的目的是(5)。
根据通信信号的传输方式,可以分为(1)、(2)。(1)
曼彻斯特编码的特点是(1),它的编码效率是(2)上。(2009年上半年试题)(1)
E1载波的基本帧由32个子信道组成。其中30个子信道用于传送语音数据,2个子信道(1)用于传送控制信令。该基本帧的传送时间为(2)。(2009年下半年试题)(1)
网络用户只能接收但不能发送E-mail,不可能的原因是__________。(2010年下半年试题)
下列语句中准确描述了ISDN接口类型的是()。
在Linux系统中可用ls-al命令列出文件列表,______列出的是一个符号连接文件。
公开密钥方法的主要优点之一是(1)。RSA算法的基础是(2)。当N个用户采用公开密钥方法进行通信时,系统中共有(3)个密钥,每个用户要小心保管好(4)个密钥,为了防止用户否认他们曾经通过计算机发送过的文件,较方便的方法是利用公开密钥的方法完成(5)。
阅读以下说明,回答问题1~4,将解答填入对应的解答栏内。[说明]假设二叉树采用链式存储方式存储,编写一个后序遍历二叉树的非递归方式。Voidpostorder(btree*B){btree*stack[m0
Mcc:abe度量法是通过定义环路复杂度,建立程序复杂性的度量,它基于一个程序模块的程序图中环路的个数。计算有向图G的环路复杂性的公式为:V(G)=m—n+2,其中V(G)是有向图G中的环路个数,m是G中的有向弧数,n是G中的节点数。下图所示程序图的程序复
随机试题
A.乙胺嘧啶B.青蒿素C.甲硝唑D.伯氨喹E.氯喹疟疾病因性预防的首选药是
有效的事业生涯的设计与开发应遵循的原则是
实施依法治国的核心是【】
阅读闻一多的《发现》,然后回答以下小题。我来了,我喊一声,进着血泪,“这不是我的中华,不对,不对!”我来了,因为我听见你叫我,鞭着时间的罡风,擎一把火;我来了,不知道是一场空喜。我会见的是噩梦,哪
高血压时的肾脏病理变化表现为( )
关于伴热管与主管的安装要求,正确的是()。
《巴塞尔新资本协议》规定,商业银行交易账户中的项目通常按市场后价格计价,当缺乏可参考的市场价格时,可以按照()定价。
Y在弗里德曼的货币需求函数式中表示()。
一、注意事项1.本题由给定资料与作答要求两部分构成。考试时限为150分钟。其中,阅读给定资料参考时限为40分钟,作答参考时限为110分钟。满分100分。2.请在题本、答题卡指定位置上用黑色字迹的钢笔或签字笔填写自己的姓名和准考证号,并用2B铅笔在准考证
Answerthequestionsbelow.ChooseNOMORETHANTWOWORDSfromthepassageforeachanswer.Writeyouranswersinboxes38-40on
最新回复
(
0
)