Ok(int t) //邻接矩阵存储图
{
for (int j = 1; j <= n; j++)
if (a[t][j] == 1 && x[t] == x[j])
return false;
return true;
}
backtrack(int t)
{
if (t > n)
sum++;
else
{
for (int i = 1; i <= m; i++) //每个节点有m个颜色可选,逐项选择并判断是否符合条件,之后回溯。
{
x[t] = i;
if (Ok(t))
backtrack(t + 1);
x[t] = 0; //回溯,查看下一个颜色是否可行
}
}
}
06-04
6235
08-15