2 条题解
-
0
P1028 [NOIP 2001 普及组] 数的计算——题解
解题思路
令
f[i]表示以 开头的合法数列数。只取一个数时有 1 种;若继续添加,下一项可以是 到 ,选择 后后续方案数为f[j]。因此f[i]=1+sum(f[j])。按 从小到大递推。复杂度分析
时间复杂度 ,空间复杂度 。
C++17 参考代码
#include <bits/stdc++.h> using namespace std; long long f[1005]; int main(){ int n;cin>>n; for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<=i/2;j++)f[i]+=f[j];} cout<<f[n]<<'\n';return 0; }
- 1
信息
- ID
- 4915
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
粤公网安备44195502000195号