数据结构_地图填色问题.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE 2 WORD格式可编辑 专业技术 资料分享 《数据结构》实验报告 院系 光电与信息工程学院 专业 电子信息工程 姓名 学号 电话 2011级 2班 2013年5月22日 实验题目 数据结构——期末综合实验——地图填色问题 问题描述 1976年。美国科学家APPEL和HAKEN利用计算机证明了:对一张地图,可以用不超过4种颜色对其填色,使得相邻的区域填上不同的颜色。要求输入一张行政区地图,用4种颜色对其填色,要求相邻的行政区域内没有相同的颜色,给出所有的填色方案,并统计方案个数。 数据描述 首先考虑如何存储行政区域图,由于邻接矩阵能更好地描述各行政区之间的关系,所以采用邻接矩阵G来存储地图。 G[ I , J ]=1 表示I , J 两个行政区域相邻,为0表示不相邻 可采用二维数组来表示邻接矩阵G;另外设一数组COLOR[I]记录各行政区域所填颜色,分别取值为{1(红色),2(黄色),3(蓝色),4(绿色)};数据描述如下: INT G[N][N]; INT COLOR[N+1]; 概要设计 全局变量定义 #define MAX_VERTEX_NUM 26 // 最大行政区域个数 // 邻接矩阵数据类型的定义 typedef struct { char vexs[MAX_VERTEX_NUM]; // 行政区域-顶点向量 int acrs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];// 邻接矩阵 int vexnum; // 地图当前行政区域个数 }Graph ; int Color[MAX_VERTEX_NUM+1]; // 地图行政区域填充的颜色存储数组 long int Count=0; // 统计总共的填色方案个数 本程序主要包含6个函数: 主函数 main() 创建地图及行政区域的邻接矩阵 Create_Graph () 显示行政区域的邻接矩阵关系 Printf_Graph () 对地图行政区域进行第一次着色 Load_Color () 对地图行政区域进行各种方案着色的显 Print_Color () 判断这个颜色对第n行政区域能不能满足要求 Same_Color() Create_Graph各函数间调用关系如下: Create_Graph Printf_Graph Printf_Graph M Main() Load_Color Load_Color Same_Color Same_Color Print_Color Print_Color 主函数的伪码 main() { 定义一个邻接矩阵 G; 创建地图及行政区域的邻接矩阵; 显示行政区域的邻接矩阵关系; 对地图进行填充颜色; 改变颜色,显示多种方案; } 详细设计 // 邻接矩阵数据类型的定义 #define MAX_VERTEX_NUM 26 // 最大行政区域个数 typedef struct { char vexs[MAX_VERTEX_NUM]; // 行政区域-顶点向量 int acrs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵 int vexnum; // 地图当前行政区域个数 }Graph ; /**************************************************************************************** *函数:Create_Graph *功能:建立地图的邻接矩阵 *说明:输入参数 Graph *G 本函数很好的完成了地图的创建以及行政区域之间的存储。 在输入错误的时候,会有相应的指示,使得程序更加健壮。 ****************************************************************************************/ void Create_Graph( Graph *G ) // 建立地图行政区域的邻接矩阵 { 输入地图的行政区域的个数G->vexnum ; 输入行政区域,构造行政区域-顶点向量 ; 初始化邻接矩阵都为0; 构造行政区域邻接矩阵; { 输入与V1 相邻的行政区域,存放于

文档评论(0)

文档分享 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档