一个游戏,n*n的方格,每次将左上角的染色,相应的一个连通块全部染色,连通块的定义为,4个方向相邻的,而且颜色一样的。
问最少的步数,IDA*搜索。
重要的一步是将整个方格分为3个部分,第一部分是和左上角在一个连通块的,标为1,第二部分为和连通块颜色不一样,但是相邻的,标为2,可以知道,标为2的部分是我们染色的选择,将连通块染成2的颜色,那样就将这个方块加入到连通块中。
A*剪枝,剩下的中还有多少种颜色,说明至少要染色多少次。
[cpp]
#include
#include
#include
#include
#include
#include