Algorithm学习笔记 --- 百钱买百鸡问题(枚举练习)

来源:互联网 发布:上海二手房成交数据 编辑:程序博客网 时间:2024/04/29 18:57
 百钱买百鸡问题:有一个人有一百块钱,打算买一百只鸡。到市场一看,公鸡一只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;}
0 0
原创粉丝点击