SDUTOJ 小P的故事――神奇的换零钱

2015-01-27 14:17:23 · 作者: · 浏览: 33
\
#include
   
    
#include
    
      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
   
#include 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<