MagicScaring

HDU2069

Dec 27th, 2017
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. /*!!!硬币总数不能超过100个!!!*/
  2. #include <iostream>
  3. #include<cstdio>
  4. #include<cstring>
  5. #define M 250
  6. #define N 100
  7. using namespace std;
  8. int dis[5]={1,5,10,25,50};
  9. int c1[M+1][N+1],c2[M+1][N+1];
  10. //开个二维数组用来控制硬币总数
  11. void solve()
  12. {
  13.     int i,j,k,l;
  14.     for(i=0;i<=100;i++)
  15.     c1[i][i]=1;
  16.     for(i=1;i<5;++i)
  17.     {
  18.         for(j=0;j<=M;++j)
  19.         {
  20.             for(k=0;k+j<=M;k+=dis[i])
  21.             {
  22.                 for(l=0;l+k/dis[i]<=100;++l)
  23.                      c2[k+j][l+k/dis[i]]+=c1[j][l];
  24.             }
  25.         }
  26.         for(j=0;j<=M;++j)
  27.         {
  28.             for(l=0;l<=100;++l)
  29.             {
  30.             c1[j][l]=c2[j][l];
  31.             c2[j][l]=0;
  32.             }
  33.         }
  34.     }
  35. }
  36. int main()
  37. {
  38.     int i,l,n;
  39.     solve();
  40. //     freopen("xx.out","w",stdout);
  41. //    for(i=0;i<=250;++i)
  42. //    {
  43. //        int sum=0;
  44. //        for(l=0;l<=100;++l)
  45. //        sum+=c1[i][l];
  46. //        printf("%d = %d\n",i,sum);
  47. //    }
  48.     while(scanf("%d",&n)!=EOF)
  49.     {
  50.         int sum=0;
  51.         for(i=0;i<=100;++i)
  52.         sum+=c1[n][i];
  53.         printf("%d\n",sum);
  54.     }
  55. //    cout << "Hello world!" << endl;
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment