五塔
#include <bits/stdc++.h>
using namespace std;
int d[15], f[15], g[15];
int main()
{
for(int i = 1; i <= 12; i ++ ) d[i] = 2 * d[i - 1] + 1;
memset(f, 0x3f, sizeof f);
memset(g, 0x3f, sizeof g);
f[0] = 0;
g[0] = 0;
for(int i = 1; i <= 12; i ++ )
for(int j = 0; j <= i; j ++ )
f[i] = min(f[i], 2 * f[j] + d[i - j]);
for(int i = 1; i <= 12; i ++ )
{
for(int j = 0; j <= i; j ++ )
for(int k = 0; k <= 12 - j; k ++ )
{
g[i] = min(g[i], 2 * g[j] + 2 * f[k] + d[i - j - k]);
}
cout << g[i] << endl;
}
return 0;
}
⬅️ 全排列 🏠 00-刷题理模型 ➡️ 奇怪的汉诺塔
💬 评论