zoukankan      html  css  js  c++  java
  • 钱币兑换问题

    钱币兑换问题

    在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。

    Input
    每行只有一个正整数N,N小于32768。
    Output
    对应每个输入,输出兑换方法数。
    Sample Input
    2934
    12553
    Sample Output
    718831
    13137761

    解题思路:外层循环从1到3,代表三种硬币,内层循环j代表的是钱数。
    当i=1时,dp数组全为1.
    当i=2时,可以选择1,2两种硬币。此时dp数组是递增的
    当i=3时,可以选择三种硬币。同上。

    Code:

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=32767+10;
    long long dp[maxn];
    int main(){
    	int n;
    	dp[0]=1;
    	for(int i=1;i<=3;i++){
    		for(int j=i;j<maxn;j++){
    			dp[j]=max(dp[j],dp[j]+dp[j-i]);
    		}
    	}
    	while(cin>>n){
    		cout<<dp[n]<<endl;
    	}
    	
    	return 0;
    }
    
    七月在野,八月在宇,九月在户,十月蟋蟀入我床下
  • 相关阅读:
    C++中类模板的概念和意义
    欢迎访问新博客aiyoupass.com
    P2327
    P2885
    P1968
    Link-Cut-Tree
    树的重心
    点分治笔记
    SPOJ 375
    树链剖分
  • 原文地址:https://www.cnblogs.com/voids5/p/12695046.html
Copyright © 2011-2022 走看看