主题:请教一元钱换零钱问题的优化算法
将一元钱换成1分、2分、5分、1角、2角、5角的零钱若干,一共有多少种算法?
我最初写的算法要用到6层循环,但是这个应该是可以优化的
据说最终可以优化成一个公式
不知要怎么优化呢?
哪位可以给个具体点的思路
多谢各位咯!
我的代码如下:
#include <iostream.h>
void main()
{
int total=0;
for(int i=0;i<=100;i++)
for(int j=0;j<=50;j++)
for(int k=0;k<=20;k++)
for(int l=0;l<=10;l++)
for(int m=0;m<=5;m++)
for(int n=0;n<=2;n++)
if(i+2*j+5*k+10*l+20*m+50*n==100)
{
cout<<i<<" "<<j<<" "<<k<<" "<<l<<" "<<m<<" "<<n<<" "<<"*";
total++;
}
cout<<total;
cin.get();
}
我最初写的算法要用到6层循环,但是这个应该是可以优化的
据说最终可以优化成一个公式
不知要怎么优化呢?
哪位可以给个具体点的思路
多谢各位咯!
我的代码如下:
#include <iostream.h>
void main()
{
int total=0;
for(int i=0;i<=100;i++)
for(int j=0;j<=50;j++)
for(int k=0;k<=20;k++)
for(int l=0;l<=10;l++)
for(int m=0;m<=5;m++)
for(int n=0;n<=2;n++)
if(i+2*j+5*k+10*l+20*m+50*n==100)
{
cout<<i<<" "<<j<<" "<<k<<" "<<l<<" "<<m<<" "<<n<<" "<<"*";
total++;
}
cout<<total;
cin.get();
}