UVa 674 - Coin Change

第一个动归程序,完全背包,本来是用记忆化搜索做的(貌似需要开二维数组来标记,一维数组标记不完,总有重复的数据),没做出来,用递推写了一下,过了~

代码如下:

#include<iostream>
#include<cstdio>
using namespace std;

int dp[8000];
int coin[5] = {1, 5, 10, 25, 50};

int main()
{
    dp[0] = 1;
    for(int i=0; i<5; i++)
    {
        for( int j= 0; j<7490; j++)
            dp[ j + coin[i] ] += dp[ j ];
    }
    int num;
    while(scanf("%d", &num) != EOF)
    {
        printf("%d\n", dp[num]);
    }
    return 0;
}


你可能感兴趣的:(UVa 674 - Coin Change)