贪婪算法_找零钱

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪婪算法_找零钱相关的知识,希望对你有一定的参考价值。

 

贪婪算法是一种求近似解的方法,它存在如下几个问题:

1.不能保证最后的解是最优解。

2.不能求最大解或者最小解问题。

3.只能满足某些约束条件的可行解范围。

 

下面给出用贪婪算法解决找零钱这一问题的代码:

 1 #include<stdio.h>
 2 #define max 7
 3 float facevalue[max]={50,20,10,5,1,0.5,0.1};//同时是否有无该面值用于找零,也能在此处进行修改
 4 int num[max]={0};
 5 float exchange(float n)
 6 {
 7     int i;
 8     for(i=0;i<max;i++)
 9         if(n>facevalue[i]) break;
10     while(n>0&&i<max)
11     {
12         if(n>=facevalue[i])
13         {
14             n=n-facevalue[i];
15             num[i]++;
16         }
17         else if(n<0.1)//不足1毛找一毛
18         {
19             num[max-1]++;
20             break;
21         }
22         else i++;
23     }
24     return 0;
25 }
26 int main()
27 {
28     int i=0;
29     float m;
30     printf("请输入要找零的数:");
31     scanf("%f",&m);
32     exchange(m);
33     printf("\n%.2f元零钱的组成:\n",m);
34     for(i=0;i<=max;i++)
35         if(num[i]>0)
36             printf("%6.2f:%d张\n",facevalue[i],num[i]);
37             return 0;
38 }

 

以上是关于贪婪算法_找零钱的主要内容,如果未能解决你的问题,请参考以下文章

贪心算法结构与算法分析:C语言描述

(原)关于人民币找零钱的问题

数据结构与算法笔记(十七)—— 贪心算法及经典案例(找零问题背包问题拼接最大数字问题活动选择问题)

数据结构与算法笔记(十七)—— 贪心算法及经典案例(找零问题背包问题拼接最大数字问题活动选择问题)

算法:322. Coin Change找零钱

算法:找零钱322. Coin Change