找零钱
人民币有100、50、20、10、5、1、0.5、0.1等多种面额(单位为元,第五套人民币)。在补零钱时,例如需补零钱68.90元,如何尽可能快地找零钱?
Matlab代码实现%贪婪算法--找零钱 clear,close all format short; target=input('请输入需要找的零钱(以分为单位): '); parvalue=[10000,5000,2000,1000,500,100,50,10]; %记录人民币面值,以分为单位 num=zeros(8); %记录面值对应的找钱张数 for i=1:8 num(i)=floor(target/parvalue(i)); target=mod(target,parvalue(i)); end for i=1:8 if num(i)~=0 fprintf('%d 张面值为 %0.1f元\n',num(i),parvalue(i)/100); end end
Matlab
中fix
,round
,floor
,ceil
的区别
1) fix(n)的意义是取小于n的整数(是向零点舍入的意思是往零的方向上靠),与四舍五入无关,就是纯粹的一种取值函数
fix(pi)=3; fix(3.5)=3; fix(-3.5)=-3;
2) round(n)的意思是纯粹的四舍五入
round(pi)=3; round(3.5)=4; round(-3.5)=-4; round(-3.1)=-3;
3) ceil(n)的意思是向正方向舍入, floor(n)向负方向舍入
ceil(pi)=4; ceil(3.5)=4; ceil(-3.2)=-3;向正方向舍入
floor(pi)=3; floor(3.5)=3; floor(-3.2)=-4;向负方向舍入