题目描述:
假设1元,5元,10元,50元,100元的人民币若干,实现一个能找到最少张数累计达到一个指定金额方法。如:67元,可分为67个1元钱。也可分为6个10元7个1元,其中最少人民币分法为一张50元,一张10元,一张5元,两张1元,五张不同金额的拆分方法为最最少张数拆分法。
要求实现函数:
void CalLeastChange(long lInputValue, int *iOutputRlt)
【输入】 lInputValue: 输入整数金额
【输出】 lOutputRlt: 输出计算结果
【注意】仅考虑整数金额拆分方法
示例
输入:“67”
输出:“5”
#include<iostream> using namespace std; void CalLeastChange(long lInputValue, int *iOutputRlt) { int highNum=lInputValue/(10*10); int lowerNum=lInputValue-(lInputValue/10)*10; int curNum=(lInputValue/10)%10; int count=highNum; if(curNum>=5) { count++; curNum-=5; } count=count+curNum; if(lowerNum>=5) { count++; lowerNum-=5; } count=count+lowerNum; *iOutputRlt=count; cout<<*iOutputRlt<<endl; } int main() { int lInputValue=1238; int lInputValue1=67; int iOutputRlt[]={0}; CalLeastChange(lInputValue,iOutputRlt); CalLeastChange(lInputValue1,iOutputRlt); return 0; }