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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2014-5-26 10:19  /  3155 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

294645832 发表于 2014-5-26 12:24
我也做出来  感觉你的应该再加上一步 z%3 !=0 continue   吧   保证是3的倍数 ...

遍历的时候当公鸡 母鸡 小鸡的价格总和操作100文的时 后面就可以不再遍历了
  例如当公鸡a= 20的时候   母鸡b肯定<=20  20*3(公鸡的价格总和)+20*2(母鸡的价格总和)+小鸡的价格总和 >=100,这个时候循环就可以终止了,但是循环条件里面是for(int b = 0; b<=50; b++),所以对于20<b<=50这个取值区间没有必要在进行遍历了。
  1.   for(int a = 0; a<=33; a++){//最多33只公鸡
  2.                   for(int b = 0; b<=50; b++){//最多50只母鸡
  3.                           int c = 100 - a - b; //c只小鸡
  4.                           if((a*3 + b*2 + c/3 == 100) && c%3 == 0 ){   
  5.                               System.out.println(a + "只公鸡," + b + "只母鸡," + c + "只小鸡");
  6.                           }
  7.                           if(a*3 + b*2 + c/3 > 100)
  8.                                   break;
  9.                   }
  10.            }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报 1 0
附耳细说 发表于 2014-5-26 15:48
遍历的时候当公鸡 母鸡 小鸡的价格总和操作100文的时 后面就可以不再遍历了
  例如当公鸡a= 20的时候    ...

加入
if(a*3 + b*2 + c/3 > 100)
                                  break;
这句判断后
程序效率提高了一倍
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马