[试题]

请阅读以下技术说明和C代码,将程序段中(1)~(5)空缺处的语句填写完整。

(说明)

著名的四色定理指出任何平面区域图均可用4种颜色着色,使相邻区域着不同的颜色。以下C程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。该程序中用1~4分别表示4种颜色。要着色的N个区域用0~-1编号,区域相邻关系用adj[][]矩阵表示,矩阵的i行j列的元素为1,表示区域i与区域了相邻;矩阵的i行j列的元素为0,表示区域i与区域j不相邻。数组color[]用来存储着色结果,color[i]的值为区域i,所着颜色。

(C程序)

include <stdio.h>

define N 10

void output(int color[]) { /*输出一种着色方案*/

int i ;

for ( i = 0 ; i < N ; i++ )

printf( "%4d" , color[i] ) ;

printf ("/n") ;

}

int back(int *ip ,int color[] ) { /*回溯*/

intc = 4 ;

while ( c == 4 ) {

if ( *ip <= 0 )

return 0 ;

-- (*ip) ;

c =(1);

color[*ip] =-1 ;

}

return c ;

}

/*检查区域i,对c种颜色的可用性*/

int colorOk(int i , intc , int [] [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( colorOK( (3) ))

return k ;

return 0 ;

}

int coloring(int adj [] [N]) { /*寻找各种着色方案*/

int color[N] , i , c , cnt ;

for(i = 0 ; i < N ; i++)

color[i] =-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));

}

参考答案与解析:

相关试题

阅读以下程序说明和C£«£«程序,将程序段中(1)~(5)空缺处的语句填写完整。

[试题]阅读以下程序说明和C++程序,将程序段中(1)~(5)空缺处的语句填写完整。(说明)以下(C++程序)实现一个简单的小型复数类MiniComplex,该复数类能进行输入、输出、复数的加法、减法、乘法和除法运算,还可以进行复数的相等比较。(C++程序)ifndef H_MiniComplexdefine H_MiniComplexinclude <iostream>using namespace std;class MiniComplex{public: //重载流插入和提取运算符(1) ostre

  • 查看答案
  • 阅读以下技术说明和C代码,将C程序中(1)~(5)空缺处的内容填写完整。[说明]

    [试题]阅读以下技术说明和C代码,将C程序中(1)~(5)空缺处的内容填写完整。[说明]某种传感器的输出值Ratio依赖于环境温度temp(-40℃≤temp≤50℃)。对一组环境温度值(ITEMS个),已经测量得到了相应的Ratio值(如表4-10表格所示)。表4-10粗略地描述了曲线Ratio(temp)。校正系数K是Ratio的倒数,因此也依赖于环境温度temp。在数据处理中,需要用更多的列表值细致地描述曲线K(temp),如表4-11所示。在表4-11中,各温度值所对应的K值是对表4-10进行线性

  • 查看答案
  • 阅读以下技术说明及Java程序,将Java程序中(1)~(5)空缺处的语句填写完

    [试题]阅读以下技术说明及Java程序,将Java程序中(1)~(5)空缺处的语句填写完整。(说明)用创建Thread类的子类的方法实现多线程,判断一个数是否是素数。如果是,打印“是素数”,如果不是,则打印“不是素数”;如果没有参数输入,显示“请输入一个命令行参数”。(Java程序)import java.io.* ;public class TestThread{ //Java Application主类public static void main(Sting args[ ]){if (args le

  • 查看答案
  • 请根据试题的要求,将汇编程序代码中(1)~(8)空缺处的内容填写完整。

    [主观题]请根据试题的要求,将汇编程序代码中(1)~(8)空缺处的内容填写完整。

  • 查看答案
  • 阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明] (

    [试题]阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明](1)对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。例如,给定字符集合{a,b,c,d)及其权值2、7、4、5,可构造如图3-26所示的最优二叉树,以及相应的结构数组Ht(如表3-12所示,其中数组元素Ht[0]不用)。结构数组Ht的类型定义如下:(2)用“0”或“1”标识最优二叉树中分支的规则是:从一个结点进入其左(右)孩子结点,就用“0”(或“1”)标识该分支(示例见图3-26

  • 查看答案
  • 请阅读以下技术说明、类图及Java代码,根据要求将(1)~(7)空缺处的内容填写

    [试题]请阅读以下技术说明、类图及Java代码,根据要求将(1)~(7)空缺处的内容填写完整。1. [说明]已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器面板如图1-18所示。该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如图1-19所示。在图1-19中,

  • 查看答案
  • 下面给出用户登录的部分代码。请将(6)~(8)空缺处的代码填写完整。

    [试题]下面给出用户登录的部分代码。请将(6)~(8)空缺处的代码填写完整。

  • 查看答案
  • 阅读以下说明和C程序代码,将程序补充完整。[说明] 下面C程序代码的功能是:对于

    [主观题]阅读以下说明和C程序代码,将程序补充完整。[说明]下面C程序代码的功能是:对于输入的一个正整数n(100≤n<1000),先判断其是否是回文数(正读反读都一样的数)。若不是,则将n与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如,278不是回文数,其反序数为872,相加后得到的1150还不是回文数,再将1150与其反序数511相加,得到的1661是回文数。函数int isPalm(long m)的功能是:将正整数m

  • 查看答案
  • 阅读以下说明和C程序代码,将应填入______处的语句写在答题纸的对应栏内。 [

    [试题]阅读以下说明和C程序代码,将应填入______处的语句写在答题纸的对应栏内。[说明]函数MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数n转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:define MAXSIZE 32typedef struct{int * elem; /* 栈的存储区 */int max;

  • 查看答案
  • 试题五(共15分)阅读以下说明和C£«£«代码,填补C£«£«代码中的空缺(1)

    [试题]试题五(共15分)阅读以下说明和C++代码,填补C++代码中的空缺(1)~(6),将解答写在答题纸的对应栏内。(说明)已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。下面是实现该工资系统的C++代码,其中定义了四个类:工资系统类PayRoll,员工类Employee,正式工类Salaried和计时工类Hourly,Salaried和Hourly

  • 查看答案
  • 请阅读以下技术说明和C代码,将程序段中(1)~(5)空缺处的语句填写完整。 (说