麻烦讲一下思路,谢谢
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
有三根铜柱,依次命名为A,B,C,其中每根柱子上都放置着任意数量(可以为0)的石盘,石盘中央都有一个穿孔,使得铜柱可以从石盘的中央穿过去。每个石盘都有着互不相同的尺寸,要求无论如何,尺寸小的石盘始终放置在尺寸比它大的石盘的下方,否则这个世界就会飞灰烟灭。
当然,在不违反以上条件下,你可以将任意石塔顶部的那块石盘,放置到任意一个不相同的石塔(或者是“空塔”)的顶部上方。给定一个石塔组的初始状态和终止状态,要求给出最短的操作序列,使得通过该操作序列,石塔组可从初始状态到达终止状态。
输入格式
输入数据分为两部分,第一部分表示初始状态,第二部分表示终止状态。
每部分共三行,表示三个石塔。第i行的开头为一个正整数Ni,表示石塔i的石盘数量,接下来Ni个数从高到低依次表示每个石盘的尺寸。
输入数据保证合法,且必能从初始状态到达终止状态。
输出格式
输出最短的操作序列。每个操作用两个[0,2]的正整数x,y表示,表示将x的顶部移动到y。每个操作单独放置在一行。
样例输入
1 1
1 2
1 3
1 3
1 2
1 1
样例输出
1 2
3 1
2 3
样例输入
2 10 30
2 20 40
1 50
1 50
2 10 30
2 20 40
样例输出
2 3
1 3
1 2
3 1
3 2
1 2
3 1
2 1
2 3
1 3
2 1
3 2
3 1
2 1
2 3
1 2
1 3
2 3
1 2
3 2
数据规模和约定
对于20%的数据,0<N1+N2+N3<=4
对于40%的数据,0<N1+N2+N3<=6
对于100%的数据,0<N1+N2+N3<=16