1 条题解
-
0
这题可以用递推做 #include<bits/stdc++.h> using namespace std; long n,i,j,s,f[1005]; int main() { cin>>n; for(i=1;i<=n;i++) { f[i]=1;//本身 for(j=1;j<=i/2;j++)//到i的一半 f[i]+=f[j];//每次累加 } cout<<f[n]; return 0; } 记忆化版 不加记忆化90! 震惊了我都,数据太水! #include<bits/stdc++.h> using namespace std; long n,i,j,s,f[1005]; long dg(long n) { if(n==1)return 1; long s=1,i; for(i=1;i<=n/2;i++)//思路很简单 { if(!f[i]){ s+=dg(i); f[i]=dg(i);//记忆化 } else s+=f[i];//出现过直接调用 } return s; } int main() { cin>>n; cout<<dg(n); return 0; }
- 1
信息
- ID
- 59
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 21
- 已通过
- 13
- 上传者