贪婪算法_找零钱
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 }
以上是关于贪婪算法_找零钱的主要内容,如果未能解决你的问题,请参考以下文章
数据结构与算法笔记(十七)—— 贪心算法及经典案例(找零问题背包问题拼接最大数字问题活动选择问题)