作业帮 > 综合 > 作业

地图着色问题C/C++

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/16 04:01:15
地图着色问题C/C++
已知中国地图,请设计地图着色软件,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色最少.
【提示】
(1) 数据结构的设计:地图可以采用图的数据结构,每个省为一个节点,边表示对应的两个省相邻.
(2) 算法设计:设计着色算法,保证邻接点不是同一种颜色.
(3) 地图数据的输入采取从文件中读取.
(4) 结果输出方式可以采用图形方式或文本方式.
我说的是程序-= 思路我也有 遍历序列 递归-=
从一个省开始,给它涂上任意一种颜色1,遍历它旁边的省份,涂上与已经涂色并于他相邻的省份不同的颜色就行了.
理论上4种颜色就够了.地图的四色问题嘛!
可能会有多组解.用递归(dfs)就可以输出所有解了.
地图着色算法C语言源代码
前面我写了一个地图着色(即四色原理)的C源代码.
写完以后想了一下,感觉还不完善,因为从实际操作的角度来考虑,四种可用的颜色放在旁边,不同的人可能会有不同的选择顺序,另外,不同的人可能会选择不同的城市作为着色的起点,而当时的程序没有考虑这个问题.于是,把程序修改为下面的样子,还请同行分析并指出代码中的不足之处:
#i nclude
#define N 21
int allcolor[4];/*可用的颜色*/
int ok(int metro[N][N],int r_color[N],int current)
{/*ok函数和下面的go函数和原来的一样,保留用来比较两种算法*/
int j;
for(j=1;j