1. 问题
图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;
如果不存在,则回答“NO”。
2. 解析
设G有n个顶点,将顶点编号为1,2,…,n,则搜索空间为深度n的m叉完全树,将颜色编号为1,2,…,m,结点<x1,x2,…,xk>(x1,x2,…,xk∈{1,…m},1<=k<=n)表示顶点1的颜色x1,顶点2的颜色x2,…,顶点k的颜色xk
3. 设计
颜色种数的完全m叉树 颜色种数的完全叉树的深度为n
bool Color::ok(int k)
{
// 检查颜色可用性
for (</