码迷,mamicode.com
首页 > 编程语言 > 详细

贪婪算法_找零钱

时间:2016-03-23 22:13:24      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:

 

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

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 }

 

贪婪算法_找零钱

标签:

原文地址:http://www.cnblogs.com/nvliumang/p/5313086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!