#include <iostream>
#include <cmath>
using namespace std;
void hanoi(int n, char a, char b, char c, int &ab, int &ac, int &ba, int &bc, int &ca, int &cb) {
if (n == 1) {
if (a == 'A' && c == 'B') ab++;
else if (a == 'A' && c == 'C') ac++;
else if (a == 'B' && c == 'A') ba++;
else if (a == 'B' && c == 'C') bc++;
else if (a == 'C' && c == 'A') ca++;
else if (a == 'C' && c == 'B') cb++;
return;
}
hanoi(n-1, a, c, b, ab, ac, ba, bc, ca, cb);
if (a == 'A' && c == 'B') ab++;
else if (a == 'A' && c == 'C') ac++;
else if (a == 'B' && c == 'A') ba++;
else if (a == 'B' && c == 'C') bc++;
else if (a == 'C' && c == 'A') ca++;
else if (a == 'C' && c == 'B') cb++;
hanoi(n-1, b, a, c, ab, ac, ba, bc, ca, cb);
}
int main() {
int n;
cin >> n;
int ab = 0, ac = 0, ba = 0, bc = 0, ca = 0, cb = 0;
hanoi(n, 'A', 'B', 'C', ab, ac, ba, bc, ca, cb);
printf("%d\n%d\n%d\n%d\n%d\n%d",ab,ac,ba,bc,ca,cb);
return 0;
}
代码运行超时,时间复杂度为O(n^3);
没有想法了,有谁能帮帮我。