标签:dp
<pre name="code" class="cpp">#include<stdio.h> #include<string.h> int dp[40000]; int main() { int n,i,j,a[3]={1,2,3}; dp[0]=1; for(i=0;i<=2;i++) for(j=a[i];j<=32769;j++) dp[j]=dp[j]+dp[j-a[i]]; while(scanf("%d",&n)!=EOF) { printf("%d\n",dp[n]); } return 0; }//上述是正确代码..
下面是的代码是自己第一次编写的..不过超时..哪位大牛帮我指点下错误啊..没弄懂.. #include<iostream> #include<memory.h> using namespace std; int dp[100000]; int main() { int n,a[3]={1,2,3},i,j; while(cin>>n) { memset(dp,0,sizeof(dp)); dp[0]=1; for(i=0;i<=2;i++) for(j=a[i];j<=n;j++) dp[j]=dp[j]+dp[j-a[i]]; cout<<dp[n]<<endl; } return 0; }
标签:dp
原文地址:http://blog.csdn.net/r_misaya/article/details/40461039