NEUQACM OJ:1095--鸡兔同笼

来源:互联网 发布:电子商务系统代码java 编辑:程序博客网 时间:2024/06/04 17:54

NEUQACM OJ:1095–鸡兔同笼

题目如下

非常经典的一道入门题。

方法一

还记得小学是如何解这样的题吗?
没错!
列方程!!
设鸡的只数为 x , 则兔的只数为 nx .
方程如下:

2x+4(nx)=m

x=4nm2

问题在于 4nm 可能为奇数,此时就要判断 4nm 是否为奇数,同时不要忘记 0xn ;

方法二

这就涉及到一个最基础也是最暴力的算法:

枚举
枚举算法又称为穷尽算法,它的基本思想是“有序地尝试每一种可能”。

定义一个变量 ii 取遍 1n 中的每一个整数值,如果符合 2i+4(ni)=m,就输出 i (代表鸡的只数)和 ni(代表兔的只数)

主要代码如下:

...int n,m;    while(cin>>n>>m&&n&&m)//当n,m都非零时进入循环    {    bool flag=false;//判断是否有解,默认false,代表无解;true代表有解    for(int i=0;i<=n;++i)        {            if(2*i+4*(n-i)==m)            {                flag=true;//有解                cout<<i<<' '<<n-i<<endl;            }        }        if(!flag)//如果无解,输出“No answer"        {            cout<<"No answer"<<endl;        }   }...

通过这道题,相信大家一定对枚举算法有了更深的认识。有时我们可以对枚举算法进行优化,比如收紧枚举的条件。

此题可以先判断 4nm 的奇偶性,如果为奇数,直接输出No answer.

其实还有很多可以优化的地方正等着大家去发现。

原创粉丝点击