深搜,四色定理,(POJ1129)
2024-10-21 09:49:10
题目链接:http://poj.org/problem?id=1129
解题报告:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; bool map[][];
int mark[];
char str[];
int n,ans; ///判断给x这个节点,上color这种颜色是否可以
bool Judge(int x,int color)
{
for(int i=; i<n; i++)
{
if(i!=x&&map[x][i]&&mark[i]==color)///如果子节点同色则不可以
return ;
}
return ;
} ///搜索第pos个节点
void dfs(int pos)
{
///搜索完毕。
if(pos==n)
{
///*max_element(mark,mark+n);是查找[mark,mark+n)中的最大者
ans=min(ans,*max_element(mark,mark+n));
return ;
}
///从pos这个节点开始搜起
for(int i=pos; i<n; i++)
{
///四色定理
for(int j=; j<=; j++)
{
///给i这个节点上j这种颜色是否符合
if(Judge(i,j))
{
///符合题意的话,给i上j这种颜色
mark[i]=j;
///搜索下一个节点
dfs(i+);
}
}
}
} int main()
{
while(scanf("%d",&n),n)
{
memset(map,false,sizeof(map));
for(int i=; i<n; i++)
{
scanf("%s",str);
for(int j=; j<strlen(str); j++)
{
map[i][str[j]-'A']=true;
map[str[j]-'A'][i]=true;
}
}
memset(mark,,sizeof(mark));
ans=;
mark[]=;
dfs();
if(ans==)
{
printf("1 channel needed.\n");
}
else
printf("%d channels needed.\n",ans);
}
return ;
}
最新文章
- sql server 中隐藏掉无关数据库
- 基于Treeview控件遍历本地磁盘
- JavaScript判断字符串是否含有中文(实用)
- IOS UIwebview 背景色调整
- UNIX标准化及实现之标准之间的冲突
- 多路复用的server模型
- Swift - 41 - swift1.2新特性(2)
- T4模板之基础篇
- (转)$.extend()方法和(function($){...})(jQuery)详解
- jquery层次选择器:空格 > next + nextAll ~ siblings
- ptrdiff_t 和 size_t
- python第十六天
- Java设计模式之原型设计模式
- Excel 恢复默认行高、列宽
- Gym 101873D - Pants On Fire - [warshall算法求传递闭包]
- Spark 调优(转)
- [原创]HTML 用div模拟select下拉框
- 异常Throwable
- UVa 674 Coin Change(完全背包)
- C++显式转换