提交时间:2026-01-04 14:40:55
运行 ID: 79745
int countSequences(int k) { // 如果已经计算过,直接返回结果(记忆化优化) if (memo[k] != 0) { return memo[k]; } // 基础情况:仅包含k自身的数列,计数为1 int total = 1; // 遍历所有可以追加的数i(i ≤ k/2) for (int i = 1; i <= k / 2; ++i) { // 累加每个i对应的合法数列数 total += countSequences(i); } // 存储结果到记忆化数组,方便后续复用 memo[k] = total; return total; } int main() { int n; cin >> n; // 初始化记忆化数组,大小为n+1(下标对应数字1~n),初始值0 memo.resize(n + 1, 0); // 计算并输出结果 cout << countSequences(n) << endl; return 0; }