(递归) 汉诺塔问题 lintcode 169
将n个从小到大的(上到下)盘子从A移动到C,借助B。其中大的盘子不能放在小的盘子上面输出模拟过程。
将n个盘子从A移动到C => 将n-1个盘子从A移动到B , 再将最底部的一个盘子从A移动到C,最后将B上的n-1个盘子从B移动到C
class Solution { public: /** * @param n: the number of disks * @return: the order of moves */ vector<string> res; vector<string> towerOfHanoi(int n) { // write your code here move(n, "A", "B", "C"); return res; } void move(int n, string from, string buffer, string to){ if(n==1){ string s = "from "+ from + " to " + to ; res.push_back(s); } else{ move(n-1, from, to, buffer); move(1, from, buffer, to); move(n-1, buffer, from, to); } } };