zhi识点
1.最简单的汉诺塔:需要pow(2, n - 1)-1次操作,即7, 15, 31
2.memset(f, 0x3f, sizeof f);可以把数组f里所有值都赋成一个很最大的数,也有-0x3f
#include <bits/stdc++.h>
using namespace std;
int f[13], d[13];//d是三塔, f是四塔QwQ
int main()
{
//首先递推三塔
d[1] = 1;
for(int i = 2; i <= 12; ++ i)
{
d[i] = d[i - 1] * 2 + 1;
}
//四塔初始化(也有-0x3f)
memset(f, 0x3f, sizeof f);
f[1] = 1;
for(int i = 2; i <= 12; ++ i)
{
for(int j = 1; j <= i; ++ j)
{
f[i] = min(f[i], f[j] * 2 + d[i - j]);
}
}
for(int i = 1; i <= 12; ++ i) cout << f[i] << endl;
}