A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一直都在看视频,记笔记,做点练习题后,果然感觉不自在啊,
看来还是要多练习。

就是想问这个问题:鸡兔同笼,各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. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1 有想法,有实践!顶

查看全部评分

5 个回复

倒序浏览
这个问题有个比较搞笑的解法,40个头说明鸡和兔子一共40只,让鸡和兔子都抬起一只脚,还剩100-40只脚,让鸡和兔子再抬起一只脚,这时所有的鸡都跌到了,还有60-40=20只脚,这20只脚全部是兔子的,但是兔子已经抬起两只脚了,所以兔子有20/2 = 10只,所以鸡有30只

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1 很好的想法,用在程序中很好,也很新颖!.

查看全部评分

回复 使用道具 举报 1 0
  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.         }
复制代码

点评

竟然跟我回复的思路一样,时间也差不多。。。  发表于 2014-3-23 00:12

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 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. }
复制代码
回复 使用道具 举报
  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. }
复制代码

凑个热闹 哈哈

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马