【正经题解】必AC
2026-09-19 14:59:57
发布于:广东
17阅读
0回复
0点赞
妙脆角提供
变量声明与输入
int n, f[1005], g[1005];
int main(){
cin >> n;
f[0] = 1;
g[0] = 2;
}
递推
解释:
- g[n]代表n个汉诺塔片过两个柱子所需的步数,公式:g[n] = 2 * g[n - 1] + f[n - 1] + 2
- f[n]代表n个汉诺塔片过一个柱子所需的步数,公式:f[n] = 2 * g[n - 1] + 1
for (int i = 0; i < n; i++){
f[i] = 2 * g[i - 1] + 1;
g[i] = 2 * g[i - 1] + f[i - 1] + 2;
}
cout << g[n - 1] << endl;
总的来说这题十分的简单,但是推不出公式你就很麻烦
完整代码如下
#include<bits/stdc++.h>
using namespace std;
int n, f[1005], g[1005];
int main(){
cin >> n;
f[0] = 1;
g[0] = 2;
for (int i = 0; i < n; i++){
f[i] = 2 * g[i - 1] + 1;
g[i] = 2 * g[i - 1] + f[i - 1] + 2;
}
cout << g[n - 1] << endl;
return 0;
}
—————————————————————————学会了吗?给个关注和赞吧——————————————————————————
全部评论 1
学会了吗

12小时前 来自 广东
1


有帮助,赞一个