递推。
f[i]表示把i进行处理可得的数的个数。
枚举头部接什么数可得递推式f[i]=1+∑f[j] (j<=i/2)。
其实可以用前缀和优化,不过这题的数据范围没这个必要。
#include"cstdio" int main() { int n,f[1001]; scanf("%d",&n); for(int i=1; i<=n; i++) { f[i]=1; for(int j=1; j<=i/2; j++) f[i]+=f[j]; } printf("%d",f[n]); return 0; }