题目来源:
leetcode题目,网址:面试题 08.06. 汉诺塔问题 - 力扣(LeetCode)
解题思路:
汉诺塔问题的解法,将 A 柱子上的 n-1 个盘子移到 B 柱子上,将 A 柱子上的最后一个盘子,移到 C 柱子上,最后将 B 上的所有盘子移到 C 柱子上。递归执行此操作即可。
解题代码:
class Solution {
public void hanota(List<Integer> A, List<Integer> B, List<Integer> C) {
move(A,B,A.size()-1,C);
move(A,C,1,B);
move(B,C,B.size(),A);
}
public void move(List<Integer> from,List<Integer> to,int n,List<Integer> last){
if(n==0){
return;
}else if(n==1){
to.add(from.get(from.size()-1));
from.remove(from.size()-1);
}else{
move(from,last,n-1,to);
move(from,to,1,last);
move(last,to,n-1,from);
}
}
}
总结:
无官方题解。