注册 登录
编程论坛 C++教室

用1元,2元,5元,10元,20元和50元的纸币组成100元,共有多少种情况。

windfresh 发布于 2008-10-15 19:19, 3813 次点击
要求写出除了多重循环方案之外的另一种程序代码,要求输出总方案数和每种方案中各纸币的个数。
7 回复
#2
happycplusplus2008-10-16 11:39
给你点思路把
首先考虑
  1元可以组成100次;
  2元可以组成50次;
  5元可以组成20次;
  10元可以组成10次;
  20元可以组成5次;
  50元可以组成2次;(这些都是你for循环的终止值)
然后判断条件就是
  1+2+5+10+20+50==100&&1*i+2*j+5*k+10*l+20*o+50*p==100(i,j,k,l,o,p是你上面做循环的) 在定义一个int count=0记数  
如果条件成立  
那么 count++;
cout<<count;

[[it] 本帖最后由 happycplusplus 于 2008-10-16 11:42 编辑 [/it]]
#3
kakaqq2008-10-16 12:16
那要多少次循环啊~~~~~~~看来算法重要性太强大了···
#4
lxlx8252008-10-17 11:16
#include<iostream>
using namespace std;

int main()
{
    int a,b,c,d,e,f,count,j;
    int i[200][6];
    count=0;
    for(a=0;a<=2;a++)
    {
        for(b=0;b<=5;b++)
        {
            for(c=0;c<=10;c++)
            {
                for(d=0;d<=20;d++)
                {
                    for(e=0;e<=50;e++)
                    {
                        for(f=0;f<=100;f++)
                        {
                            if(a*50+b*20+c*10+d*5+e*2+f>100) break;
                            else if(a*50+b*20+c*10+d*5+e*2+f==100)
                            {
                                i[count][6]={a,b,c,d,e,f};
                                count++;
                            }
                            else continue;
                        }
                    }
                }
            }
        }
    }
    cout<<count<<'\n';
    for(j=0;j<count;j++)
    {
        cout<<i[j][6]<<'\n';
    }
    return 0;
}
我用这个循环怎么总是报错啊?
#5
carekee2008-10-17 16:27
i[count][6]={a,b,c,d,e,f};
是什么?值吧?怎么在你这成数组了?
#6
lxlx8252008-10-17 16:38
我是想把可以实现加起来等于100的所有可能存到一个数组里
#7
happycplusplus2008-10-17 18:04
楼主  帮你修改了下

#include<iostream.h>
void main()
{
    int a,b,c,d,e,f,j;int count=0;
    count=0;
    for(a=1;a<=2;a++)
    {
        for(b=1;b<=5;b++)
        {
            for(c=1;c<=10;c++)
            {
                for(d=1;d<=20;d++)
                {
                    for(e=1;e<=50;e++)
                    {
                        for(f=1;f<=100;f++)
                        {
                             if((a+b+c+d+e+f==100)&&(1*f+2*e+5*d+10*c+20*b+50*a))
                            {
                                cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<endl;
                                count++;
                            }
                        }
                    }
                }
            }
        }
    }
    cout<<"一共有"<<count<<"次";
  
}
#8
sweetyhappy2008-10-17 19:10
以前这道题是百钱买百鸡
1