这是对矩阵色数的蛮力尝试。从某种意义上说,它似乎可以为我提供所需的正确颜色数量,但它不是 1、2、3、4,而是显示 1、2、3、6。由于某种原因,即使矩阵可能以较少的颜色成功,它仍然会失败并继续达到最大数量。它继续失败是否有原因?
“n”是颜色的最大数量。“v”是顶点,“m”是当前使用的颜色数。
伪代码:http: //i42.tinypic.com/deoc2u.jpg
static int color(){
int i;
for(i = 1; i <= n; i++)
{
if(color(0,i)){
return i;}
}
return i;
}
static boolean color(int v, int m) {
if(v > n-1)
return true;
else
{
for(int i = 1; i <= m; i++)
{
boolean match = false;
q[v] = i;
for(int j = 0; j < n; j++)
{
if(input[v][j] == 1)
{
if(q[v] == j+1)
match = true;
}
}
if(match == false)
{
if(color(v+1,m))
return true;
}
}
q[v] = 0;
return false;
}
}
样本输出:
文件名:file1
输入
6
0 1 1 0 1 1
1 0 1 1 1 1
1 1 0 1 0 1
0 1 1 0 1 1
1 1 0 1 0 1
1 1 1 1 1 0
1 失败
2 失败
3 失败
4 失败
5 失败
颜色:1 2 3 1 3 6