题目: LINK
题目给出了 起始 和 最终的两张图, 每个图有9小块, 每个小块有对应图案,而且 每个小块的边有可能有齿轮
每一步是顺时针转动一个小块,对于和它相邻的小块,如果这两块接触的两条边都含有齿轮,就会带动相邻的小块转动,被带动的小块有可能会继续带动其他小块。
求 最少多少步可以由起始图 得到目的图.
BFS,不过有点繁琐。
要注意,1,状态的记录,不能把每个小块的图案压缩8*8*9,每次去判断,虽然没有这样试着去写,应该妥妥过不掉。每个小块有4种状态,即转动0,1,2,3次,对于9个小块 4^9个状态,可以接受。
2, 每次转动后, 每块的每条边也会跟着转动,也就是图中齿轮的情况会变化。
3, 每次判断是否可以达到目的图时,要判断当前每块的转动状态是否和目标一样。
代码写的比较挫。
#include
#include
#include
#include
#include
#include
#include
#include
#include