3
2025-09-26 17:28:06
发布于:浙江
8阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
// 处理特殊情况
if (n == 1) {
cout << 1 << endl;
return 0;
}
// dp[m] 表示以体重为 m 的鸡作为最后一只鸡时的序列数量
vector<long long> dp(n + 1, 0);
dp[1] = 1; // 体重为 1 的鸡无法繁殖,只有 1 种序列
// 计算从 2 到 n 的每一个值
for (int m = 2; m <= n; ++m) {
int max_k = m / 2; // 子鸡的最大可能体重
long long total = 1; // 初始值为 1(不繁殖的情况)
// 累加所有可能的子鸡体重对应的序列数量
for (int k = 1; k <= max_k; ++k) {
total += dp[k];
}
dp[m] = total;
}
cout << dp[n] << endl;
return 0;
}
这里空空如也







有帮助,赞一个