[ZJOI2005]九数码游戏
题目描述
输入输出格式
输入格式:
输入文件中包含三行三列九个数,同行的相邻两数用空格隔开,表示初始状态每个方格上的数字。初始状态不会是目标状态。
输出格式:
如果目标状态无法达到,则输出“UNSOLVABLE”(引号不输出)。
否则,第一行是一个整数S,表示最少的操作次数。接下来4 × (S + 1)行,每四行表示一个状态:前三行每行三个整数,相邻两数用空格隔开,表示每个方格上的数字,第四行是一个空行,作为分隔。第一个状态必须是初始状态,最后一个状态必须是目标状态。
输入输出样例
输入样例#1:
2 3 01 8 75 4 6
输出样例#1:
42 3 01 8 75 4 61 2 35 8 04 6 71 2 30 5 84 6 70 1 24 5 36 7 80 1 23 4 56 7 8 因为这是3*3的全排列矩阵变换; 最多有9!(362880)种状态; 用BFS,搜到终点为止,中间记录一下路径; 将3*3的全排列映射成一一对应的数,可以用康托展开; 最好不要用map,可能会超时;
#include#include #include #include #include