a*s 发帖数: 425 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: aos (aos), 信区: JobHunting
标 题: 请教一道题
发信站: BBS 未名空间站 (Sat Mar 9 00:23:55 2013, 美东)
请教一道题
和hanoi tower有点像,不过有点不一样
有N个stack, 每个stack都有几个数字,
每次,可以从其中的一个stack里取出一个或者几个数,然后放到另外一个stack里,
比如
stack_1里,有数字 4,3,6,2
stack_2里,有5,7,8
那么一次操作,可以从stack_1里,取6,2,然后放入stack_2,
那么,
stack_1里就成了4,3,
stack_2里变成了5,7,8,6,2
或者,可以从stack_1里,去3,6,2 放入 stack_2
那么,
stack_1里就变成了4,
stack_2里就变成了5,7,8,3,6,2
现在的问题是,给定一个初始的状态,一个最终的状态,通过上面的移数规则,找出最
少的移数步骤,
一个简单的例子,
初始状态:
stack_1:3,1,4
stack_2:2,5,
stack_3:(empty)
最终状态:
stack_1:(empty)
stack_2:(empty)
stack_3:1,2,3,4,5
那么最少的移动步骤是5步
1:move 5 from stack_2 to stack_1
2:move 1,4,5 from stack_1 to stack_3
3:move 4,5 from stack_3 to stack_1
4:move 3,4,5 from stack_1 to stack_2
5:move 2,3,4,5 from stack_2 to stack_3 |
|