这里就不提供理论知识的讲解,只提供代码及运行结果,另外算法还在更新中,请勿打扰
(提供理论知识的最佳学习路线:点击我,即可给你惊喜······································)
#include<iostream> #include<algorithm> using namespace std; const int N=7; int Count[N]={3,0,2,1,0,3,5};//对应钱币的张数 int Value[N]={1,2,5,10,20,50,100};//所拥有的钱币面额 int solve(int money) { int num=0;//储存总的找回零钱的张数 for(int i=N-1;i>=0;i--) { int tempNum;//储存不同面额零钱的张数 int c=min(money/Value[i],Count[i]);//对不同的面额,找回零钱的最多张数; money=money-c*Value[i];//找了相应金额的零钱,那么就要相应的减去找了的零钱。 tempNum=c; num+=c; cout<<"你找了面额为"<<Value[i]<<"元的"<<tempNum<<"张!"<<endl; if(money<=0){ return num; } } if(money>0) num=-1;//当你把所有的钱都找出去之后, //发现钱没找够,那么你的零钱就不够找回给对方。 return num; } int main() { int money; cout<<"请输入你要找的总钱:"; cin>>money; int res=solve(money); cout<<"=============零钱找回结果==============="<<endl; if(res!=-1){ cout<<"你总共找了"<<res<<"张零钱"<<endl; } else { cout<<"抱歉,没有零钱找给你·····"<<endl; } return 0; }
运行结果:
Nearth==>贪心算法-002/钱币找零问题(最简单的代码)
最新推荐文章于 2024-01-23 14:45:50 发布