UVA - 674 Coin Change

这段时间在学习dp,不过还没怎么写自己的笔记,差不多这几天吧,开始,每天记录自己的成长,动态是一个难点,但也是编程比赛中最常考到的点,希望自己越来越进步吧,加油
话不多说了,上题目吧,先来链接吧:

传送门

题目描述

有五种钱币,分别为1分、5分、10分、25分、50分的;
例如 11分的组成:
          11个1分;
          1个10分+1个1分
          2个5分+1个1分
          1个5分+6个1分

输入

一个超过7489的整数m

输出

组成m的组合数目

解题思路

一开始看到就第一感觉就是dp,每一个的结果都可以由比他小1的推出

AC代码
#include<bits/stdc++.h>
#include<vector>
using namespace std;
typedef long long ll;

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

int  main()
{
    //freopen("1.txt","r",stdin);
    int T;
    int m;
    while(cin>>m)
    {
        memset(dp,0,sizeof(dp));
        dp[0]=1;
        for(int i=0;i<5;i++)
        {
            for(int j=coin[i];j<=m;j++)
            {
                dp[j]+=dp[j-coin[i]];
            }
        }
        cout<<dp[m]<<endl;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值