地图染色问题可以根据四色定理来解决。所谓四色定理,就是指可以用不多于四种的颜色对地图着色,使相邻的行政区域不重色,因此我们可以用四色定理的结论,用回溯算法对一幅给定的地图染色。
算法的基本思想是:从第(1)号行政区域开始染色,每个区域逐次用颜色1#、2#、3#、4#进行试探,若当前所取的颜色与周围已染色的行政区域不重色,则用栈记下该区域的颜色序号,否则依次用下一颜色进行试探;若出现用1#到4#颜色均与相邻区域的颜色重色,则需退栈回溯,修改当前栈顶的颜色序号,再进行试探。直到所有行政区域都已分配合适的颜色。
递归求解;在前面的n-1个节点都合法的着色之后,开始对第n个节点着色。这时候枚举可用的m个颜色,通过和与它相邻的节点的颜色相比较,来判断这个颜色是否合法。找到一种颜色能使第n个节点合法着色即可完成中国地图着色。
1 | #include<bits/stdc++.h> |
参考博客
https://blog.csdn.net/tengweitw/article/details/17641017