下面代码采用分治算法求解标准 3 柱汉诺塔问题,时间复杂度为 O(nlog⁡n)O(n\log n)。

void move(vector<int> &src, vector<int> &tar) {   int pan = src.back();   src.pop_back();   tar.push_back(pan);} void dfs(int n, vector<int> &src, vector<int> &buf, vector<int> &tar) {   if (n == 1) {      move(src, tar);      return;   }    dfs(n - 1, src, tar, buf);   move(src, tar);   dfs(n - 1, buf, src, tar);} void solveHanota(vector<int> &A, vector<int> &B, vector<int> &C) {   int n = A.size();   dfs(n, A, B, C);}
填写答案