自己的递推一塌糊涂
考前抱佛脚
#include<bits/stdc++.h> using namespace std; int f[1005]; int main() { int n;scanf("%d",&n); f[0]=f[1]=1; for(int i=2;i<=n;i++) { for(int j=1;j<=i/2;j++) f[i]=f[i]+f[j]; f[i]++; } printf("%d ",f[n]); }
然后有n的复杂度的
#include<bits/stdc++.h> using namespace std; int f[3000005]; int sum[3000005]; int main() { int n;scanf("%d",&n); for(int i=1;i<=n;i++) { f[i]+=sum[i/2]+1; sum[i]=sum[i-1]+f[i]; } printf("%d ",f[n]); }