黑马程序员技术交流社区

标题: Java如何实现已给定数目的鸡兔同笼问题? [打印本页]

作者: linweiwen    时间: 2014-3-22 21:53
标题: Java如何实现已给定数目的鸡兔同笼问题?
一直都在看视频,记笔记,做点练习题后,果然感觉不自在啊,
看来还是要多练习。

就是想问这个问题:鸡兔同笼,各40个头,100只脚,问鸡兔各有几只?


这对于数学而言列个方程式就OK了,但用Java编出来,大家是怎样实现,
我想了一下,就用了两个for循环,但感觉这样有点傻,
难道真的直接在程序中用方程式的思路,反过来算回去吗?
请解答。

  1. public class HelloWorld
  2. {
  3.         public static void main(String args[]){
  4.         int chicken,rabbit;
  5.        
  6.         for(chicken=0;chicken<=40;chicken++){
  7.                 for(rabbit=0;rabbit<=40;rabbit++){
  8.                 if((chicken+rabbit==40)&&(chicken*2+rabbit*4==100))
  9.                         {
  10.                 System.out.println("chicken有"+chicken+"只,rabbit有"+rabbit+"只.");
  11.                 }
  12.         }
  13.         }
  14.         }
  15. }
复制代码



作者: 乔钰博    时间: 2014-3-22 23:36
这个问题有个比较搞笑的解法,40个头说明鸡和兔子一共40只,让鸡和兔子都抬起一只脚,还剩100-40只脚,让鸡和兔子再抬起一只脚,这时所有的鸡都跌到了,还有60-40=20只脚,这20只脚全部是兔子的,但是兔子已经抬起两只脚了,所以兔子有20/2 = 10只,所以鸡有30只
作者: Sage    时间: 2014-3-23 00:07
  1. public static void main(String[] args) {
  2.                 for (int i = 1; i < 40; i++) { // i表示鸡的数量
  3.                         if (2 * i + 4 * (40 - i) == 100) { // 简化后的数学表达式判断
  4.                                 System.out.println("鸡的数量:" + i + "只 \n免的数量:" + (40 - i) + "只");
  5.                         }
  6.                 }
  7.         }
复制代码

作者: linweiwen    时间: 2014-3-23 00:08
本帖最后由 linweiwen 于 2014-3-23 00:12 编辑
乔钰博 发表于 2014-3-22 23:36
这个问题有个比较搞笑的解法,40个头说明鸡和兔子一共40只,让鸡和兔子都抬起一只脚,还剩100-40只脚,让鸡 ...

哈哈,很有意思的想法,
确实启发了我的思路!
其实,可以只关注某一个动物的数量,
就可以减少一个for循环了!

  1. class Shape {
  2.         public static void main(String[] args) {
  3.                 int rabbit = 0;
  4.                 for (int sum = 0; sum <= 40; sum++) {
  5.                         if (sum * 4 + (40 - sum) * 2 == 100) {
  6.                                 rabbit = sum;
  7.                                 System.out.println("rabbit:" + rabbit + ";chicken:"
  8.                                                 + (40 - rabbit));
  9.                                 break;
  10.                         }
  11.                 }
  12.         }
  13. }
复制代码

作者: 焚雨成灰    时间: 2014-3-23 22:34
  1. class Test {
  2.         public static void main(String[] args) {
  3.                 int cockNum = 0;
  4.                 int rabbitNum = 0;
  5.                
  6.                
  7.                 while(!(cockNum + 2 * (40 - cockNum) == 50)) {
  8.                        
  9.                         cockNum ++;
  10.                 }
  11.                 rabbitNum = 40 - cockNum;
  12.                 System.out.println(cockNum+"..."+rabbitNum);
  13.                
  14.         }
  15. }
复制代码

凑个热闹 哈哈




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2