uva 674 Coin Change (动态规划:记忆化搜索)

来源:互联网 发布:软件开发周末班 编辑:程序博客网 时间:2024/05/16 16:04

很简单的一道题,记忆化搜索下就可以了

代码如下:

#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 10000using namespace std;int a[] = {50, 25, 10, 5, 1};int dp[5][MAXN];int dfs(int m, int n) {    if(dp[m][n] != -1)        return dp[m][n];    if(n == 0)        return dp[m][n] = 1;    int ans = 0;    for(int i=m; i<5; ++i) {        if(n >= a[i])            ans += dfs(i, n-a[i]);    }    return dp[m][n] = ans;}int main(void) {    int n;    memset(dp, -1, sizeof(dp));    while(scanf("%d", &n) != EOF) {        printf("%d\n", dfs(0, n));    }    return 0;}


0 0
原创粉丝点击