货币面值={100,50,20,10,5,2,1}
需要找钱241元,货币使用的张数达到最小的方式,给出最小的张数是多少?
//货币面值={100,50,20,10,5,2,1}
//需要找钱241元,货币使用的张数达到最小的方式,给出最小的张数是多少?
#include<iostream>
using namespace std;
int m[7]={100,50,20,10,5,2,1};//按面值降序排列
int n[7];
int solve(int money){
int s=0;//记录总共使用的货币张数
for(int i=0;money>0;i++){
if(money>=m[i]){
n[i]=money/m[i];
s+=n[i];
money-=n[i]*m[i];
}
}
return s;
}
int main(){
cout<<"找钱最少"<<solve(241)<<"张!";
return 0;
}

这是一个关于找零问题的算法实现,通过动态规划找到找241元时使用最少货币张数的方案。程序中定义了货币面值数组并按降序排列,然后通过循环计算每种面值货币的最大数量,以达到找零目标且使张数最小。
1万+

被折叠的 条评论
为什么被折叠?



