导航:首页 > 源码编译 > java贪心算法找零

java贪心算法找零

发布时间:2024-07-08 19:13:52

Ⅰ 编写程序,采用贪婪法编程实现人民币的找零

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。
故:
#include <stdio.h>
int main()
{
int a[6]={100,50,20,10,5,1};//定义金数数目,忽视1块钱以下的。。
int money,tmpMoney=0;
scanf("%d",&money);//输入想要换算成零钱的值。
for(int i=0;i<6;i++){//由于上面数组有六个值。循环六次
while(money>=a[i]){//当钱额小于面值时退出循环
money-=a[i];//当前金额减去面值
tmpMoney++;//保存当前面值的张数
}
printf("%d元的张数为:%d\n",a[i],tmpMoney);
tmpMoney=0;//把这下一次的数量清零
}
}
想要找零设置角和分的可以,只要把类型改为float类。或把值*10倍

Ⅱ C语言,贪心算法,货币找零问题

贪心算法找零就是现实中从最大面额开始找的思路。不代表是最优解,只是算法之一。

由于面额输入顺序不定,我先对输入的面额进行降序排序。

下面代码:

#include <stdio.h>

#include <malloc.h>

int main()

{

int i,j,m,n,*ns=NULL,*cn=NULL,sum=0;

printf("请输入总金额m及零钱种类n:"),scanf("%d",&m),scanf("%d",&n);

printf("请分别输入%d种零钱的面额: ",n);

if(!(ns=(int *)malloc(sizeof(int)*n))) return 1;

if(!(cn=(int *)malloc(sizeof(int)*n))) return 1;

for(i=0;i<n;i++) scanf("%d",&ns[i]);

//------------考虑输入面额顺序不定,先对面额进行降序排列(如按照降序输入,该段可删除)

for(i=0;i<n;i++)

for(j=i+1;j<n;j++)

if(ns[j]>ns[i]) ns[j]^=ns[i],ns[i]^=ns[j],ns[j]^=ns[i];

//-------------------------------------------------------------------

for(i=0;i<n;i++)//贪心算法,从最大面额开始

if(m>=ns[i])

cn[i]=m/ns[i],m=m%ns[i],sum+=cn[i],printf("%d元%d张 ",ns[i],cn[i]);

printf(" 最少使用零钱%d张 ",sum);

return 0;

}

阅读全文

与java贪心算法找零相关的资料

热点内容
android表格demo 浏览:263
安卓怎么让相册不显示网页 浏览:300
php文件系统源码 浏览:713
易信java 浏览:486
北仑二级压缩螺杆机 浏览:49
加密路线免费入口 浏览:744
计算器程序员是干嘛的 浏览:362
数控编程里fo是啥键 浏览:660
javacdataxml 浏览:949
本机tcp服务器地址 浏览:432
切换pdf 浏览:97
iturns下载的app在哪里 浏览:646
云起书院App在哪里 浏览:620
怎么对hex文件进行加密 浏览:291
pdf少年时 浏览:960
两个同名文件夹同步 浏览:636
拍照文件夹哪个好用 浏览:96
文件夹和书包 浏览:516
解压归档拿登记证 浏览:230
去体验解压房 浏览:618