题目:对下面地图 5 个省份染色
(1)使用红,绿,蓝三种颜色;
(2)相邻2个省不能同样颜色;
(3)找出所有解。
分析:
简单粗暴,直接遍历
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main ( )
{
int HuNan, JiangXi, ZheJiang, AnHui, HuBei; // 五个省份
int sum = 0;
puts ( "以 湖南, 江西, 浙江, 安徽, 湖北 五个相邻省份涂色" );
puts ( " 0 - 红 1 - 绿 2 - 蓝 \n" );
for ( HuNan = 0; HuNan <= 2; ++ HuNan )
{
for ( JiangXi = 0; JiangXi <= 2; ++ JiangXi )
{
for ( ZheJiang = 0; ZheJiang <= 2; ++ ZheJiang )
{
for ( AnHui = 0; AnHui <= 2; ++ AnHui )
{
for ( HuBei = 0; HuBei <= 2; ++ HuBei )
{
if ( HuNan != HuBei && HuNan != JiangXi && HuBei != AnHui && JiangXi != ZheJiang && AnHui != ZheJiang )
{
printf ( "湖南 %d\n", HuNan );
printf ( "江西 %d\n", JiangXi );
printf ( "浙江 %d\n", ZheJiang );
printf ( "安徽 %d\n", AnHui );
printf ( "湖北 %d\n\n", HuBei );
++ sum;
}
}
}
}
}
}
printf ( "共有 %d 种方案\n", sum );
return 0;
}