`
- 浏览:
1310894 次
-
-
描述:
-
-
PoorBessiehastakenajobintheconveniencestorelocatedjustovertheborderinSlobbovia.SlobboviansusedifferentcoinagesthantheUSA;theircoinvalueschangeday-by-day!
-
HelpBessiemakeoptimalchangeforSlobbovianshoppers.YouwillneedtocreateC(1<=C<=1000)centsofchangeusingN(1<=N<=10)coinsofvariousvalues.Alltestcaseswillbesolvableusingthesuppliedcoins.
-
If5coinsofvalues50,25,10,5,and1wereavailable,Bessiewouldmakeoptimumchange(minimalcoins)of93centsbyusing1x50,1x25,1x10,1x5,and3x1coins(atotalof7coins).
-
Howhardcoulditbe?Thefinaltwotestcaseswillbechallenging.
-
-
输入:
-
-
Line1:Twospace-separateintegers:CandN
-
Lines2..N+1:Eachlinecontainsasingleuniqueintegerthatisacoinvaluethatcanbeusedtocreatechange
-
-
输出:
-
-
Line1:AsingleintegerthatistheminimumnumberofcoinstocreateCcents
-
-
输入样例:
-
-
935
-
25
-
50
-
10
-
1
-
5
-
输出样例:7
-
-
-
-
解题思路:先想到用贪心法,可以从大的面额开始算,直到超出,然后换成小的面额去求,直到求出一个N,但后来总觉得有个地方可能会做不到,没那么容易贪的,如果面额没有1的时候,是不是可能出现不能刚好的情况,这个时候就得反过来让大的面额进行减少的处理,有点小麻烦。就想用另一种方法,动态规划,比如既然要求面额为93的最优解,就得求出92、91、90一直到1的最优解,把问题一直小化处理
-
-
例如:面值为50、25、1、10、5求93的最优解
-
-
要求93得先求43、68、92、83、88的最优解+1,就这样一直求下去
-
-
时间复杂度:O(m*n);
-
-
代码如下:
-
-
#include<iostream>
-
-
usingnamespacestd;
-
-
-
-
intmain()
-
-
{
-
-
intn,m;
-
-
inta[500]={0};
-
-
intb[10000]={0};
-
-
cout<<"请输入硬币面值的个数:";
-
-
cin>>n;
-
-
cout<<"请输入各个硬币的面值:";
-
-
for(inti=1;i<=n;i++)
-
-
cin>>a[i];
-
-
cout<<"请输入要找的钱:";
-
-
cin>>m;
-
-
voidcoin(intn,intm,inta[],intb[]);
-
-
coin(n,m,a,b);
-
-
cout<<"最优解为:"<<b[m]<<endl;
-
-
return0;
-
-
}
-
-
-
-
voidcoin(intn,intm,inta[],intb[])
-
-
{
-
-
b[0]=0;
-
-
for(inti=1;i<=m;i++)
-
-
{
-
-
intmin=m;
-
-
for(intj=1;j<=n;j++)
-
-
{
-
-
if(i>=a[j]&&b[i-a[j]]<min)
-
-
min=b[i-a[j]];
-
-
}
-
-
b[i]=min+1;
-
-
}
-
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
贪心算法 找零钱 c语言 简洁 绝对无误
简单的程序,会给你很大的启发,特别是初学者!希望对大家会有帮助
找零钱最佳组合的测试用例
使用贪心算法设计思想设计算法实现找零钱问题。一个小孩买了价值少于1美元的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目不限的面值为25美分、10美分、5美分、及1美分的硬币。...
包括源代码、测试用例表、结果截图和实验心得、。还有流程图。
找零钱算法 C#实现
【找零钱问题】一个小孩买了价值为33美分的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目有限的面值为25美分、10美分、5美分、及1美分的硬币。给出一种找零钱的贪心算法。
找零钱算法可执行exe
代码功能可以做到,任意输入一个金额,输出不同纸币的最少数量,最小面额为5角。
找零钱问题:有6种面值的货币(100,50,20,10,5,1),给定一个钱的数目x,要求用最少的货币数目表示,相同面值的货币可以多次出现。
机试题:找零钱 当前零钱:50元10张,20元20张,10元50张,5元80张,1元100张,0.5元200张,0.1元500张 输入:需找的钱数 返回:各面额零钱的张数
硬币找零钱问题,求最小硬币数目,输出最小硬币数目,有文件输出操作.
自己编了一个简单的找零钱的JAVA程序,希望对大家有用!!
天大算法课作业,使用贪心算法实现找零钱的问题,内附实验报告以及代码。
算法设计与分析 贪心算法 找零钱问题 算法设计与分析找零钱问题贪心算法 计算机专业
2.【找零钱问题】一个小孩买了价值为33美分的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目有限的面值为25美分、10美分、5美分、及1美分的硬币。给出一种找零钱的贪心算法。
用Java实现找零钱计算,使得所照张数最少。
提高商场找零钱的效率,也为了帮助一个网友
数组b[J]代表要找零的总数。 初始化b[0]=0; b[J]=min{b[J-a[k]]};1;((J-a[k])>=0) 程序中面值有1,3,4,6 存于a数组中 时间复杂度O(M*N) 输出总硬币数
2.【找零钱问题】一个小孩买了价值为33美分的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目有限的面值为25美分、10美分、5美分、及1美分的硬币。给出一种找零钱的贪心算法。