学了DP大家都知道这题使用动态规划做的,但是提交时竟出现超时现象,为什么呢?参考过一位同学的答案可知,原来这道题中还学要对每个结果的值进行记忆。
#include<stdio.h> #include<string.h> int main() { int n,i,j,k; __int64 f[130][130]; memset(f,0,sizeof(f)); for(i=1;i<=120;i++) { f[i][i]=1; for(j=1;j<i;j++) for(k=1;k<=j;k++) f[i][j]+=f[i-j][k]; for(j=1;j<=i;j++) f[i][0]+=f[i][j]; } while(scanf("%d",&n)!=EOF) printf("%I64d\n",f[n][0]); return 0; }