这道题我是用bfs+hash做的,最好的方法应该是双向bfs或是A*。虽然这学期刚学的AI,但是偷懒,就这样过了吧。
POJ不支持unordered_map,所以得自己写hash,好在比较简单。由于棋盘是9位的(算上空白位置,那一位我用0填充的),所以每个棋盘(即状态值)可以用一个int表示。每个状态需要记录状态值,空白位置,前一个状态值,及怎么从前一个状态值move过来的。这里用的是hash来从状态值获取这些信息。我取的是状态值的前6位作为hash值,建立了一个链式哈希,即将映射到同一个哈希值的所有信息都用一个链表串起来。
另外,这道题是special judge,意思是说答案有多个,不唯一。我的答案就和标准答案不一样,但都是对的。
1077 | Accepted | 11696K | 688MS |