必威体育Betway必威体育官网
当前位置:首页 > IT技术

四色原理

时间:2019-10-08 09:15:35来源:IT技术作者:seo实验室小编阅读:64次「手机版」
 

四色

验证四色原理

描述

验证任何一个平面存在一种着色方案,使得相连的区域颜色不同,且颜色种类不大于4;

在这里插入图片描述

输入

第一行输入n。第2n+1行:每行表示1n个省,相邻的省用1表示(本身不与本身相邻)。

输出

输出每种可以填色的方式

输入样例 1

7

0 1 0 0 0 0 1

1 0 1 1 1 1 1

0 1 0 1 0 0 0

0 1 1 0 1 0 0

0 1 0 1 0 1 0

0 1 0 0 1 0 1

1 1 0 0 0 1 0

输出样例 1

1 2 1 3 1 3 4 (这是其中的一种,并按字典顺序输出)

分析:对于这幅地图来说,要求是相邻颜色不同,把它填满,那么完全可以按顺序来填色;

按顺序填色优势:在search函数中寻找周边颜色时;只需搜索0~i-1号省份,不用全部都找一遍,

而且在回溯时也不用清0后面的省份颜色

要知道一个省份可以有四种颜色

#include<bits/stdc++.h>
using namespace std;
bool biao[22];
int yan[22];//各省颜色 
int a[22][22];
int n;
void input(){//输入 
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int k=1;k<=n;++k){
			cin>>a[i][k];
		}
	}
}
bool search(int k,int i){    //寻找 有无相同颜色 
	for(int l=1;l<=i-1;l++){//填色是按顺序来的,只需寻找到I-1,因为只有前面的填过色;后面的还没有填 
		if(a[i][l]==1)
		if(yan[l]==k)return false;
	}
	return true;
}void dfs(int x);
void tian(int i){
	if(i>n){
	for(int k=1;k<=n;k++)//输出 
		cout<<yan[k]<<" ";
	cout<<endl;
	/*for(int o=n;o>=i-1;--o){//置0 
		yan[o]=0;
    }*/
    //这里不需要置0的原因是:与上面函数对应,search找色的时候不会找后面的颜色,所以不用管 
    
   exit(0) ;//注意这里要让他停止,否则会超时
	}
	for(int k=1;k<=4;++k){// 1到4颜色 
		if(search(k,i)){//返回1则周边没有这个颜色 
		yan[i]=k;tian(i+1);//填再下一个
		}
	}	
}
int main(){
	input();
  tian(1);
	return 0;
}

exit(0):正常运行程序并退出程序;

相关阅读

Spp-net原理

转载自 http://blog.csdn.net/u011534057/article/details/51219959 Spatial Pyramid Pooling in Deep Convolutional Networks

如何设置透明色RGB值

透明程度的token如下 <!--透明度百分比 : 8位颜色值前两位--> <!--100% : FF--> <!--95% : F2--> <!--90% : E6-->

《设计中的色彩心理学》

色彩不只是一种视觉语言,它更是传播情感的途径。 《设计中的色彩心理学》针对设计中的色彩心理进行控索和讲述,阐述了色彩的基本

Flink架构、原理与部署测试

Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种

认识数码相机的摩尔纹 产生的原理和条件

认识数码相机的摩尔纹 产生的原理和条件 2005-07-08 16:27作者:totoba出处:天极网责任编辑:龙垦 http://digital.yesky.com/164/203

分享到:

栏目导航

推荐阅读

热门阅读