hdu 2069 Coin Change

#include<stdio.h>
#include<string.h>
int main(){
    int c1[300][110],c2[300][110];//前一个括号是指系数 后一个指硬币个数
    int num[5]={1,5,10,25,50};
    int n,i,j,k,t,s;
    while(~scanf("%d",&n)){
        memset(c1,0,sizeof(c1));
        memset(c2,0,sizeof(c2));
        for(i=0;i<=100;i++){
            c1[i][i]=1;
        }
        for(i=1;i<5;i++){
            for(j=0;j<=n;j++){
                for(t=k=0;k+j<=n;k+=num[i])
                for(t=0;t+k/num[i]<=100;t++)
                c2[j+k][t+k/num[i]]+=c1[j][t];
            }
            for(j=0;j<=n;j++)
            for(t=0;t<=100;t++){
                c1[j][t]=c2[j][t];
                c2[j][t]=0;
            }
        }
        for(s=i=0;i<=100;i++)
        s+=c1[n][i];
        printf("%d\n",s);
    }
    return 0;
}

你可能感兴趣的:(hdu 2069 Coin Change)