百钱买百鸡问题---枚举练习

 百钱买百鸡问题:有一个人有一百块钱,打算买一百只鸡。到市场一看,公鸡一只3元,母鸡一只5元,小鸡3只1元,试求用100元买100只鸡,各为多少才合适?
可以分析:

解法一:

根据题意我们可以得到方程组

  3X + 5Y + Z/3 = 100;
  
X + Y + Z = 100;
  (100 > X,Y,Z > 0, Z%3 == 0),根据这两个公式,我们可以写出最为简单的代码,一一列举所有解进行枚举

代码如下:
#include <iostream>
using namespace std;
int main()
{
    int x,y,z;
    for(x=0;x<100;x++)
    {
        for(y=0;y<100;y++)
        {
            for(z=0;z<100;z+=3)
            {
                if(x+y+z==100 && 3*x+5*y+z/3==100)
                {
                    cout<<x<<" "<<y<<" "<<z<<endl;
                }
            }
        }
    }
    return 0;
}
 
 
解法二:

另外我们根据方程特点,可以消去一个未知数,得到下面

  4X + 7Y = 100;
  X + Y + Z = 100;
  (X,Y,Z > 0, Z%3 == 0),=>>    0 <= x < = 25因此代码可以优化为下面这样子:

代码如下:
#include <iostream>


using namespace std;


int main()
{
    int x,y,z;
    for(x=0;x<25;x++)
    {
        y=100-4*x;
        if(y%7==0 && y>=0)
        {
            y/=7;
            z=100-x-y;
            if(z%3==0 && 3*x+5*y+z/3==100)
            {
                cout<<x<<" "<<y<<" "<<z<<endl;
            }
        }
    }
    return 0;
}

你可能感兴趣的:(百钱买百鸡问题---枚举练习)