硬币组合问题

这是一篇讲的很好很好的博文:http://www.cnblogs.com/python27/archive/2013/09/05/3303721.html
#include <bits/stdc++.h>
using namespace std;
int dp[10000][10000];
int coin[]={0,1,5,10,25,50};
void fd(int x)
{
    for(int i=0;i<=5;i++)
        dp[i][0]=1;
    for(int i=1;i<=5;i++)
        for(int j=1;j<=x;j++)
            for(int k=0;k<=j/coin[i];k++)
                dp[i][j]+=dp[i-1][j-k*coin[i]];
}
int main()
{
    int x;
    fd(7489);
    while(~scanf("%d",&x))
        printf("%d\n",dp[5][x]);
    return 0;
}

				
时间: 2024-12-25 08:25:05

硬币组合问题的相关文章

硬币组合

在刷腾讯笔试题时有一个选择题:有任意多个1.2.5分的硬币,有多少种组合方法组成1元. 一开始的思路认为可以使用类似斐波那契数的方法,但是马上意识到不合适,首先这是一个组合问题不是一个排列问题. 于是考虑如果5分的取1,2.....20个,其余的使用1.2分组合,而使用1,2分组成特定的钱数又可以取1,2...k个2分其余的用1分组合,依次内推,可见该问题可以使用递归法解决. 代码如下(运行结果为541): public class Solution { public int numOfCoin

练习: C#---函数(100以内7有关的数、99乘法表、100以内奇数和、硬币组合)

/// <summary> /// 100以内与7有关的数 /// </summary> public void Seven() { Console.WriteLine("100以内与7有关的数有:"); int count = 0; for (int num = 1; num <= 100;num++ ) { if((num%10==7) || (num/10==7) || (num/100==7) ||(num%7==0)) { count++; Co

硬币组合个数

给你六种面额1.5.10.20.50.100元的纸币,假设每种币值的数量都足够多,编写程序求组成N员(N为0-10000的非负整数)的不同组合的个数. 输入描述: 输入为一个数字N,即需要拼凑的面额 输出描述: 输出也是一个数字,为组成N的组合个数. 示例1 输入 5 输出 2 1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 5 int main() 6 { 7 int N; 8 char a[6]=

算法笔记——硬币找零之最少硬币数

题目来源:NYOJ995 问题描述: 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资. 我们应该注意到,人民币的硬币系统是 100,50,20,10,5,2,1,0.5,0.2,0.1,0.05, 0.02,0.01 元,采用这些硬币我们可以对任何一个工资数用贪心算法求出其最少硬币数. 但不幸的是: 我们可能没有这样一种好的硬币系统, 因此用贪心算法不能求出最少的硬币数,甚至有些金钱总数还

leetcode 518. Coin Change 2/硬币找零 2

归纳于http://www.cnblogs.com/grandyang/p/7669088.html 原题https://leetcode.com/problems/coin-change-2/description/ 518. Coin Change 2(Medium) You are given coins of different denominations and a total amount of money. Write a function to compute the numbe

HDU1398 Square Coins【母函数】

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1398 题目大意: Silverland居住的人们使用方币,这种硬币的价值都是平方数.硬币的价值分别为1分.4分.9分, -,最大为289(17^2)分.要得到10分钱,共有四种硬币组合 10个1分硬币.1个4分硬币和6个1分硬币.2个4分硬币和2个1分硬币,1个9分硬币和1个1分硬币. 现在给你一个数,问:得到这个值,共有多少种不同的硬币组合方式. 思路: 典型的母函数问题. 可列出母函数 g(x

复习以及break、continue、while、do-while的运用

一.复习:循环.反复执行某段语句一种语法形式.1.基本语法:for( 初始条件 ; 循环条件 ; 状态的改变 ){ 循环体}循环的四要素.循环的执行过程.初始条件--循环条件--循环体--状态改变--循环条件--.....案例:1.打印10您好.2.显示1-100的数(所有的数,奇数,偶数).3.显示ASCII码. 2.循环的嵌套.for( ...;... ; ...){ for(...;...;...) { }}案例:打印各种图形——外层的循环,打印行.内层循环,打印列. 3.应用(迭代,穷举

12月26日提纲

一.复习: 循环.反复执行某段语句一种语法形式. 1.基本语法: for( 初始条件 ; 循环条件 ; 状态的改变 ) {  循环体 } 循环的四要素. 循环的执行过程.初始条件--循环条件--循环体--状态改变--循环条件--..... 案例:1.打印10您好.2.显示1-100的数(所有的数,奇数,偶数).3.显示ASCII码. 2.循环的嵌套. for( ...;... ; ...) { for(...;...;...) { } } 案例:打印各种图形——外层的循环,打印行.内层循环,打印

母函数及相关的算法题

母函数即生成函数,构造这么一个多项式函数g(x),使得x的n次方系数为f(n),是组合数学中尤其是计数方面的一个重要理论和工具. (1+a1x)(1+a2x)(1+a3x)...(1+anx)=1+(a1+a2+a3+...+an)x+(a1a2+a1a3+...+an-1an)x2+...+(a1a2a3*...*an)xn 由此可以看出: 1. x的系数是a1,a2,…an的单个组合的全体.相当于从a1,a2,…an选1个进行组合,然后加在一起 2. x2的系数是a1,a2,…an的两个组合