资源简介
c 实现回溯算法解决图的M着色问题,得到冲突点与其周围节点
代码片段和文件信息
//图着色问题回溯法
/*
无向图邻接矩阵示例
0 1 1 0 0
0 1 1 0 1
1 1 0 0 1
0 1 0 0 1
0 1 1 1 0
*/
#include
int color[100];
//int c[100][100];
bool ok(int k int c[][100])//判断顶点k的着色是否发生冲突
{
int ij;
for(i=0;i {
if(c[k][i]==1&&color[i]==color[k])
return false;
}
return true;
}
void graphcolor(int nint mint c[][100])
{
int ik;
for(i=0;i color[i]=0;//初始化
k=0;
while(k>=0)
{
color[k]=color[k]+1;
while(color[k]<=m)
if (ok(kc)) break;
else color[k]=color[k]+1;//搜索下一个颜色
if(color[k]<=m&&k==n-1)//求解完毕,输出解
{
for(i=0;i printf(“%d “color[i]);
printf(“\n“);
return;//return表示之求解其中一种解
}
else if(color[k]<=m&&k k=k+1; //处理下一个顶点
else
{
// co
- 上一篇:c++11语言基础
- 下一篇:Effective Morden C++
评论
共有 条评论