找零问题的几种解决方式(递推)(持续更新)

365bet有手机app吗 admin 2025-07-27 14:33:12 阅读 1159

初学算法,找零问题算的上是一个比较经典的问题

老师上课讲的时候潇潇洒洒,以为已经是拿下了,课下唯唯诺诺,一看,发现思路没了,真是出来混,总是要还的呀。

源码:

#include

#include

using namespace std;

int den[7]={0,1,2,5,10,20,50}; //定义分配数组

int fun(int n,int i);

int main()

{

int n;

int count=0;

cout<<"请输入整币金额:";

cin>>n;

for(int i=1;i<=6;i++)

{

count+=fun(n,i);

}

cout<<"整币"<

}

int fun(int n,int i)

{

int sum=0;

int res=n-den[i];

if(res<0)

{

return 0;

}

else if(res==0)

{

return 1;

}

else

{

for(int j=1;j<=i;j++)

{

sum+=fun(res,j);

}

}

return sum;

}

核心思想:

假设找零的最大面额,并一推到底。

相关文章