辽宁省四色图

辽宁地级市四色图c/c++解决方案

已知沈阳为黄色,鞍山为紫色,大连为绿色,第四种颜色为蓝色,补全地图 

c++代码参考地图染色(四色定理)问题_四色问题染地图_德林恩宝的博客-CSDN博客

#include <iostream>
#include<string.h>
using namespace std;

int main()
{
 /*相邻的城市 
                ('沈阳','鞍山'),('沈阳','抚顺'),('沈阳','本溪'),('沈阳','锦州'),('沈阳','阜新'),
                  ('沈阳','铁岭'),('沈阳','辽阳'),('大连','鞍山'),('大连','丹东'),('大连','营口'),
                  ('鞍山','丹东'),('鞍山','锦州'),('鞍山','营口'),('鞍山','辽阳'),('鞍山','盘锦'),
                  ('抚顺','本溪'),('抚顺','铁岭'),('本溪','丹东'),('本溪','辽阳'),('丹东','辽阳'),
                  ('锦州','阜新'),('锦州','盘锦'),('锦州','朝阳'),('锦州','葫芦岛'),('营口','盘锦'),
                  ('阜新','朝阳'),('朝阳','葫芦岛')
 
如果用二维数组:map[ i ][ j ] = 1可表示 板块 i 和板块 j 相邻*/
    
int map[14][14] =     {{0,0,1,1,1,0,1,0,1,0,0,1,0,1},
                       {0,0,1,0,0,1,0,1,0,0,0,0,0,0},
					   {1,1,0,0,0,1,1,1,0,0,0,1,1,0},
					   {1,0,0,0,1,0,0,0,0,0,0,0,0,1}, 
                       {1,0,0,1,0,1,0,0,0,0,0,1,0,0},
                       {0,1,1,0,1,0,0,0,0,0,0,1,0,0},
					   {1,0,1,0,0,0,0,0,1,1,1,0,0,0}
                      ,{0,1,1,0,0,0,0,0,0,0,0,0,1,0}
                      ,{1,0,0,0,0,0,1,0,0,1,0,0,0,0}
                      ,{0,0,0,0,0,0,1,0,1,0,1,0,0,0}
                      ,{0,0,0,0,0,0,1,0,0,1,0,0,0,0}
                      ,{1,0,1,0,1,1,0,0,0,0,0,0,0,0}
                      ,{0,0,1,0,0,0,1,1,0,0,0,0,0,0}
                      ,{1,0,0,1,0,0,0,0,0,0,0,0,0,0}};
   string p[14];
   p[0]="沈阳",p[1]="大连" ,p[2]="鞍山",p[3]="抚顺",p[4]="本溪",p[5]="丹东",p[6]="锦州",p[7]="营口";
   p[8]="阜新",p[9]="朝阳",p[10]="葫芦岛",p[11]="辽阳",p[12]="盘锦",p[13]="铁岭";
int colorpart[14];
colorpart[0]=1;
colorpart[1]=2;
colorpart[2]=3;
int i,j;
i=3,j=4;   
   while(i<14)
   {   while(j<5&&i<14)
       {int k=0;
          while(k<i&&map[i][k]*colorpart[k]!=j)
	       k+=1;
	      if(k < i)//上述判断条件由于颜色相同而跳出循环,更换颜色,继续比较 
				 j++; 
			else
			{
				 colorpart[i++] = j;
				 j = 1;//每次从第一种颜色开始试错 
			}  
    	
       }
   	if(j > 4)
			j = colorpart[--i] + 1; 
   }
   
   for(int i = 0;i <= 13;i++){
   	string c;
   if(colorpart[i]==1) c="黄色";
   if(colorpart[i]==2) c="绿色";
   if(colorpart[i]==3) c="紫色";
   if(colorpart[i]==4) c="蓝色";
	cout<<p[i]<<"涂"<<c<<endl; 
		}
   
    return 0;
}

结果

沈阳涂黄色
大连涂绿色
鞍山涂紫色
抚顺涂蓝色
本溪涂绿色
丹东涂黄色
锦州涂绿色
营口涂黄色
阜新涂紫色
朝阳涂黄色
葫芦岛涂紫色
辽阳涂蓝色
盘锦涂蓝色
铁岭涂绿色

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值