题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1430
思路:每个数字只出现一次,可以用康托展开压成一个数字,然后bfs找出所有情况,直接输出就好了(多组测试,每组都找的话会T,可以把初始和末尾状态映射一下,变成初始状态都是“12345678”,因为这些操作改变的只是数字的位置,对于这个位子的数字是什么,没有什么关系)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <bitset>
#include <cmath>
#include <cctype>
#include <unordered_map>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll inff = 0x3f3f3f3f3f3f3f3f;
#define FOR(i,a,b) for(int i(a);i<=(b);++i)
#define FOL(i,a,b) for(int i(a);i&g