我是靠谱客的博主 哭泣大碗,最近开发中收集的这篇文章主要介绍贪心算法 找零钱,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 1 #include<stdio.h>
 2 #define N 60
 3 int exchage(float n,float *a,int c,float *r);
 4 void main()
 5 {
 6
float rmb[]={100,50,20,10,5,2,1,0.5,0.2,0.1};
 7
int n=sizeof(rmb)/sizeof(rmb[0]),k,i;
 8
float change,r[N];;
 9
printf("请输入要找的零钱数:");
10
scanf("%f",&change);
11
for(i=0;i<n;i++)
12
if(change>=rmb[i])
13
break;
14
k=exchage(change,&rmb[i],n-i,r);
15
if(k<=0)
16
printf("找不开!n");
17
else
18 
{
19
printf("找零钱的方案:%.2f=",change);
20
if(r[0]>=1.0)
21
printf("%.0f",r[0]);
22
else
23
printf("%.2f",r[0]);
24
for(i=1;i<k;i++)
25 
{
26
if(r[i]>=1.0)
27
printf("+%.0f",r[i]);
28
else
29
printf("+%.2f",r[i]);
30 
}
31
printf("n");
32 
}
33 }
34 int exchage(float n,float *a,int c,float *r)
35 {
36
int m;
37
if(n==0.0)
/*能分解,分解完成*/
38
return 0;
39
if(c==0)
/*不能分解*/
40
return -1;
41
if(n<*a)
42
return exchage(n,a+1,c-1,r);
/*继续寻找合适的面值*/
43
else
44 
{
45
*r=*a;
/*将零钱保存到r中*/
46
m=exchage(n-*a,a,c,r+1);
/*继续分解剩下的零钱*/
47
if(m>=0)
48
return m+1;
/*返回找零的零钱张数*/
49
return -1;
50 
}
51 }
View Code

 

最后

以上就是哭泣大碗为你收集整理的贪心算法 找零钱的全部内容,希望文章能够帮你解决贪心算法 找零钱所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部