关于江苏省地图的着色问题(课程设计)
问题介绍
地图着色问题是一个抽象的图形学问题,用程序实现对各个区域进行着色,并且相邻区域所用的颜色不同,同时保证颜色的总数最少,那么就是如何将这些抽象的问题进行数据化。如何将程序所需要的功能模拟着色在计算机中编程实现。
问题解决
先将每个城市与城市分界线进行数字化,将每个城市的地图颜色设为初始值0即为白色,在循环中判断目前城市的颜色和与当前城市有分界线的城市是否存在颜色相同。如果存在就将数字加一(改变颜色)。
流程图
初始化模块
typedef structArcNode
{int x; // 表示与当前顶点所表示城市相邻的省份的位置信息struct ArcNode *next; // 指向下一个弧结点
}ArcNode; // 表示城市之间相邻关系的弧结点
typedef struct
{char *name; // 顶点所表示的城市的名称int color; // 城市的颜色,用数字表示不同的颜色ArcNode *firstnext; // 指向第一个弧
}City[13];
着色模块
for(i=1;i<=13;i++){city[i].color=0;}for(i=1;i<=13;i++){j=1;p=city[i].firstnext;while(p!=NULL){while(p!=NULL&&j!=city[p->x].color){p=p->next;}if(p!=NULL) j++;}city[i].color=j;}
输出模块
for(i=1;i<=13;i++){printf("%s:",city[i].name);printf("%d\n",city[i].color);}
详细代码
#include <stdio.h>
#include <stdlib.h>
typedef struct ArcNode{int x; // 表示与当前顶点所表示城市相邻的省份的位置信息struct ArcNode *next;
}ArcNode; // 表示城市之间相邻关系的弧结点
typedef struct{char *name; // 顶点所表示的城市的名称int color;ArcNode *firstnext; // 指向第一个弧
}City[13];
int main()
{City city;int i,j;ArcNode
*p,*hu1,*hu2,*hu3,*hu4,*hu5,*hu6,*hu7,*hu8,*hu9,*hu10,*hu11,*hu12,*hu13,*hu14,*hu15,*hu16,*hu17,*hu18;ArcNode *hu19,*hu20,*hu21,*hu22,*hu23,*hu24,*hu25,*hu26,*hu27,*hu28,*hu29,*hu30,*hu31,*hu32,*hu33,*hu34,*hu35;ArcNode *hu36,*hu37,*hu38,*hu39,*hu40,*hu41,*hu42,*hu43,*hu44,*hu45,*hu46,*hu47,*hu48,*hu49,*hu50,*hu51,*hu52;ArcNode *hu53,*hu54,*hu55,*hu56,*hu57,*hu58,*hu59,*hu60,*hu61,*hu62;//声明表示城市顶点的信息hu1=(ArcNode *)malloc(sizeof(ArcNode));hu2=(ArcNode *)malloc(sizeof(ArcNode));hu3=(ArcNode *)malloc(sizeof(ArcNode));hu4=(ArcNode *)malloc(sizeof(ArcNode));hu5=(ArcNode *)malloc(sizeof(ArcNode));hu6=(ArcNode *)malloc(sizeof(ArcNode));hu7=(ArcNode *)malloc(sizeof(ArcNode));hu8=(ArcNode *)malloc(sizeof(ArcNode));hu9=(ArcNode *)malloc(sizeof(ArcNode));hu10=(ArcNode *)malloc(sizeof(ArcNode));hu11=(ArcNode *)malloc(sizeof(ArcNode));hu12=(ArcNode *)malloc(sizeof(ArcNode));hu13=(ArcNode *)malloc(sizeof(ArcNode));hu14=(ArcNode *)malloc(sizeof(ArcNode));hu15=(ArcNode *)malloc(sizeof(ArcNode));hu16=(ArcNode *)malloc(sizeof(ArcNode));hu17=(ArcNode *)malloc(sizeof(ArcNode));hu18=(ArcNode *)malloc(sizeof(ArcNode));hu19=(ArcNode *)malloc(sizeof(ArcNode));hu20=(ArcNode *)malloc(sizeof(ArcNode));hu21=(ArcNode *)malloc(sizeof(ArcNode));hu22=(ArcNode *)malloc(sizeof(ArcNode));hu23=(ArcNode *)malloc(sizeof(ArcNode));hu24=(ArcNode *)malloc(sizeof(ArcNode));hu25=(ArcNode *)malloc(sizeof(ArcNode));hu26=(ArcNode *)malloc(sizeof(ArcNode));hu27=(ArcNode *)malloc(sizeof(ArcNode));hu28=(ArcNode *)malloc(sizeof(ArcNode));hu29=(ArcNode *)malloc(sizeof(ArcNode));hu30=(ArcNode *)malloc(sizeof(ArcNode));hu31=(ArcNode *)malloc(sizeof(ArcNode));hu32=(ArcNode *)malloc(sizeof(ArcNode));hu33=(ArcNode *)malloc(sizeof(ArcNode));hu34=(ArcNode *)malloc(sizeof(ArcNode));hu35=(ArcNode *)malloc(sizeof(ArcNode));hu36=(ArcNode *)malloc(sizeof(ArcNode));hu37=(ArcNode *)malloc(sizeof(ArcNode));hu38=(ArcNode *)malloc(sizeof(ArcNode));hu39=(ArcNode *)malloc(sizeof(ArcNode));hu40=(ArcNode *)malloc(sizeof(ArcNode));hu41=(ArcNode *)malloc(sizeof(ArcNode));hu42=(ArcNode *)malloc(sizeof(ArcNode));hu43=(ArcNode *)malloc(sizeof(ArcNode));hu44=(ArcNode *)malloc(sizeof(ArcNode));hu45=(ArcNode *)malloc(sizeof(ArcNode));hu46=(ArcNode *)malloc(sizeof(ArcNode));hu47=(ArcNode *)malloc(sizeof(ArcNode));hu48=(ArcNode *)malloc(sizeof(ArcNode));hu49=(ArcNode *)malloc(sizeof(ArcNode));hu50=(ArcNode *)malloc(sizeof(ArcNode));hu51=(ArcNode *)malloc(sizeof(ArcNode));hu52=(ArcNode *)malloc(sizeof(ArcNode));hu53=(ArcNode *)malloc(sizeof(ArcNode));hu54=(ArcNode *)malloc(sizeof(ArcNode));hu55=(ArcNode *)malloc(sizeof(ArcNode));hu56=(ArcNode *)malloc(sizeof(ArcNode));hu57=(ArcNode *)malloc(sizeof(ArcNode));hu58=(ArcNode *)malloc(sizeof(ArcNode));hu59=(ArcNode *)malloc(sizeof(ArcNode));hu60=(ArcNode *)malloc(sizeof(ArcNode));hu61=(ArcNode *)malloc(sizeof(ArcNode));hu62=(ArcNode *)malloc(sizeof(ArcNode));city[1].name="苏州市";hu1->x=2;hu2->x=8;hu3->x=7; city[1].firstnext=hu1;//声名表示城市之间相邻的弧hu1->next=hu2;hu2->next=hu3;hu3->next=NULL;city[2].name="无锡市";hu4->x=3;hu5->x=7;hu6->x=1;city[2].firstnext=hu4;hu4->next=hu5;hu5->next=hu6;hu6->next=NULL;city[3].name="常州市";hu7->x=4;hu8->x=5;hu9->x=2;hu10->x=7;city[3].firstnext=hu7;hu7->next=hu8;hu8->next=hu9;hu9->next=hu10;hu10->next=NULL;city[4].name="镇江市";hu12->x=6;hu13->x=7;hu14->x=3;hu11->x=5; city[4].firstnext=hu12;hu12->next=hu13;hu13->next=hu14;hu14->next=hu11;hu11->next=NULL;city[5].name="南京市";hu15->x=6;hu16->x=10;hu18->x=3; hu17->x=4;city[5].firstnext=hu15;hu15->next=hu16;hu16->next=hu18;hu18->next=hu17;hu17->next=NULL;city[6].name="扬州市";hu19->x=7;hu20->x=9;hu21->x=10;hu22->x=5;hu23->x=4; city[6].firstnext=hu19;hu19->next=hu20;hu20->next=hu21;hu21->next=hu22;hu22->next=hu23;hu23->next=NULL;city[7].name="泰州市";hu24->x=8; hu26->x=1;hu27->x=2;hu28->x=3;hu29->x=4;hu30->x=6; hu60->x=9;city[7].firstnext=hu24;hu24->next=hu26;hu26->next=hu27;hu27->next=hu28;hu28->next=hu29;hu29->next=hu30;hu30->next=hu60;hu60->next=NULL;city[8].name="南通市";hu32->x=1;hu33->x=7;hu57->x=9;city[8].firstnext=hu32;hu32->next=hu33;hu33->next=hu57;hu57->next=NULL;city[9].name="盐城市";hu35->x=11;hu38->x=6;hu55->x=10;hu58->x=8;hu61->x=7;city[9].firstnext=hu35;hu35->next=hu38;hu38->next=hu55;hu55->next=hu58;hu58->next=hu61;hu61->next=NULL;city[10].name="淮安市";hu39->x=11;hu40->x=12;hu42->x=6;hu43->x=5;hu56->x=9;city[10].firstnext=hu39;
hu39->next=hu40;hu40->next=hu42;hu42->next=hu43;hu43->next=hu56;hu56->next=NULL;city[11].name="连云港市";hu44->x=12;hu45->x=13;hu46->x=10;hu47->x=9;city[11].firstnext=hu44;hu44->next=hu45;hu45->next=hu46;hu46->next=hu47;hu47->next=NULL;city[12].name="宿迁市";hu48->x=13;hu49->x=11;hu50->x=10;city[12].firstnext=hu48;hu48->next=hu49;hu49->next=hu50;hu50->next=NULL;city[13].name="徐州市";hu51->x=11;hu52->x=12;city[13].firstnext=hu51;hu51->next=hu52;hu52->next=NULL;for(i=1;i<=13;i++){city[i].color=0;}for(i=1;i<=13;i++){j=1;p=city[i].firstnext;while(p!=NULL){while(p!=NULL&&j!=city[p->x].color){p=p->next;}if(p!=NULL)j++;}city[i].color=j;}//分别为各城市着色for(i=1;i<=13;i++){printf("%s:",city[i].name);printf("%d\n",city[i].color);}//输出各城市颜色信息printf("/n 0表示白色,1表示蓝色,2表示红色,3表示绿色,4表示黄色");return 0;}
关于江苏省地图的着色问题(课程设计)相关推荐
- 地图着色问题课程设计
XXXX学院 工科课程设计 -<数据结构> 题 目: 地图着色问题 学 号:XXXXXX 姓 ...
- 地图着色问题javaScript版-- 《算法分析与设计》课程设计题目
@地图着色问题javaScript版-- <算法分析与设计>课程设计题目 地图着色问题js版 已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色 ,总数最少 地图着 ...
- Android课程设计:基于离线地图服务器的Android地图应用
Android开发课程设计:基于离线地图服务器的Android地图应用 此项目的灵感来源于伯克利cs61b的Project3: cs61b的官网地址:Project 3: Bear Maps 我的实验 ...
- android游戏课程设计,Miuka「游戏化课程设计」图卡18|好课程如何讲故事的
从[故事隐喻][游戏旅途][重要关卡][进化蜕变]四个维度对课程进行叙事描述. 可以利用这个思路为课程设计故事脚本,来描述学员会在课程中经历什么. 案例1:手账小行星,用了星球探索这个主题 故事设定: ...
- c语言funcode空格消失的函数,01北科大暑期计算机实践FunCode游戏设计+C++课程设计 - 海底世界 - 图文...
C++语言课程设计一海底世界 一.实验内容 海底有五条鱼,其中四条来回随机游动,由玩家用键盘W A S D控制另外一条游动. 要求如下: 1. 游戏初始界面如下图. 2. 来回游动的四条鱼,从屏幕左边 ...
- c语言课程设计坦克大战,funcodec++课程设计_坦克大战
<funcodec++课程设计_坦克大战>由会员分享,可在线阅读,更多相关<funcodec++课程设计_坦克大战(24页珍藏版)>请在人人文库网上搜索. 1.课程设计一 坦克 ...
- 数据库课程设计结论_结论
数据库课程设计结论 Living in the Pacific Northwest, the intertwined issues of salmon survival and river flow ...
- c语言拍飞虫课程设计报告,C++语言课程计一拍飞虫.doc
C语言课程计一拍飞虫 C++语言课程设计一拍飞虫 一.实验内容 玩家通过控制拍子拍打飞虫获取分数. 要求如下: 游戏的初始界面如图一,单击空格键即可进入游戏.进入游戏后的界面如图二.左上角有两个记录游 ...
- c语言课程设计--拼图游戏,C语言课程设计_拼图游戏.pdf
C -- 语言课程设计 拼图游戏 一.实验内容 玩家通过鼠标单击相邻位有空位的方块来移动方块,从而最终将一副散乱的图片拼成完 整的图片.要求如下: 1. 游戏的初始界面如图一,单击空格键进入游戏,进入 ...
最新文章
- C指针6:指针变量作为函数参数
- syscall 系统调用陷入_trusty系统调用
- matlab编写长度为100矩形序列,18春[华中师范大学]华师《Matlab基础与应用》在线作业(100分)...
- php实现网站插件机制的方法
- Unity 2017 Game Optimization 读书笔记(1)Scripting Strategies Part 1
- Java:URLEncoder、URLDecoder、Base64编码与解码
- 窗口,视图,视图控制器和UIKit基础-IOS开发
- 关于在不同版本和平台之间进行还原或复制的常见问题
- 【汇编优化】之arm32汇编优化
- 机器学习实践笔记(二)EOF
- 网页游戏脱机脚本制作视频教程
- 2. DICOM图像层级分类-DCMTK-工程搭建
- 怎样屏蔽掉“网页对话框”
- C语言使用openssl库解析TLS报文(SNI和证书)
- 【EXLIBRIS】纸版书目整理 -- 小书架 上 01 【166 种】【203册】
- HTML+CSS学习笔记(篇幅较大)
- 2020成考C语言答案,2020年成人高考语文题库(含历年真题练习题模拟题)
- Java实现图片的镜像处理
- 信创培训第一课:linux操作系统基础
- (一)OSPF协议 及ospf与RIP的比较