#include<stdio.h>
/*图的m着色问题*/
#define n 5
#define m 4
int a[n][n] = {
0, 1, 1, 1, 0,
1, 0, 1, 1, 1,
1, 1, 0, 1, 0,
1, 1, 1, 0, 1,
0, 1, 0, 1, 0
};
int x[n+1];
int sum;
int ok(int k)
{
for(int j=1;j<=n;j++)
if(a[k][j] == 1 &&(x[j]==x[k]))//相邻颜色相同
return 0;
return 1;
}
void backtrack(int t)
{
if(t>n)
{
sum++;
}
else
for(int i=1;i<=m;i++)
{
x[t]=i;
if(ok(t))
backtrack(t+1);
}
}
int main()
{
backtrack(1);
printf("%d", sum);
return 0;
}
图的m着色问题
最新推荐文章于 2023-07-09 10:45:04 发布