文件名称:再次Hanoi塔问题-参考代码
文件大小:622B
文件格式:TXT
更新时间:2012-11-05 03:56:50
再次Hanoi塔问题
再次Hanoi塔问题 Time Limit:2000MS Memory Limit:65536K Total Submit:72 Accepted:29 Description 古老的汉诺塔问题是:用最少的步数将N个半径互不相等的圆盘从l号柱利用2号柱全部移动到3号柱,在移动的过程中小盘要始终在大盘的上面。 现在再加上一个条件:不允许直接把盘从l号柱移动到3号柱,也不允许直接把盘从3号柱移动到1号柱。 把盘按半径从小到大用1~N编号。每种状态用N个整数表示,第i个整数表示i号盘所在的柱的编号。则N=2时的移动方案为 (1,1)≥(2,1)≥(3,1)≥(3,2)≥(2,2)≥(1,2)≥(1,3)≥(2,3)≥(3,3) 初始状态为第O步,编程求在某步数时的状态。 Input 输入的第1行为整数T(1≤T≤50000),表示输入数据的组数。接下来的丁行,每行有两个整数N,M(1≤N≤19,O≤M ≤移动N个圆盘所需的步数)。 Output 输出共有T行。 对于每组输入数据,输出N个整数表示移动N个盘在M步时的状态,每两个数之间用一个空格隔开,行首和行末不要有多余的空格。 Sample Input 4 2 0 2 5 3 0 3 1 Sample Output 1 1 1 2 1 1 1 2 1 1