--- title: "五塔" created: 2025-11-28 tags: - 算法 --- # 五塔 ```cpp #include 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; } /* 1 3 5 7 11 15 19 23 27 31 39 47 */ ``` --- ⬅️ [[全排列|全排列]] 🏠 [[00-刷题理模型]] ➡️ [[奇怪的汉诺塔|奇怪的汉诺塔]]