题解 | #汉诺塔问题#
汉诺塔问题
https://www.nowcoder.com/practice/7d6cab7d435048c4b05251bf44e9f185
#include <vector>
class Solution {
public:
void dfs(int n, string left, string mid, string right, vector<string> &ans){
if(n <= 0) return;
//首先将left中的n - 1 个移动到中间,然后再将最下面的圆盘放到最右边
dfs(n - 1, left, right, mid, ans);
string temp = "move from " + left + " to " + right;
ans.push_back(temp);
dfs(n - 1, mid, left, right, ans);
}
vector<string> getSolution(int n) {
//汉诺塔问题是典型的的递归问题,只不过是在递归问题中进行了一些的输出
string right = "right";
string left = "left";
string mid ="mid";
vector<string> ans;
dfs(n, left, mid, right, ans);
return ans;
}
};


