题目描述
小明忘记了旅行箱上的密码,现在他想自己暴力弄出密码来,但他又想知道最从一个数字到另一个数字最少需要多少步,现在请你帮忙。
另外,小明的密码箱很奇怪,只有四位数,上面的数字只有1到9,每次只能让每位数加1或者减1。按常识我们可以知道从1到9只需要减1,从9到1只需要加1。此外,你还能交换相邻的两个数字。如1234可以在一步后变成2134,但不能变成4231。
输入
第一行有一个整数:T,代表有多少组测试数据。
接下来T行,每行有两个整数(都是四位数),第一个是初状态,第二个是目标状态。
输出
每组数据输出一个整数,占一行。
样例输入
2
1234 2144
1111 9999
样例输出
2
4
题解
- 据题意暴力破解有三种方案,上滑,下滑,交换,这三个操作是平行操作。
- 因为题意是求最短步骤,显然用广度优先搜索(BFS)。
- 当然BFS直接写提交TLE,这里又要考虑判重,具体判重就是用有一个hash数组vis[],因为最大9999,数组大小在10^5以内,开销不大,查找也快。