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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王小丑 中级黑马   /  2013-2-14 21:24  /  1754 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天一哥们问我一个java题,大概意思是,一只公鸡5块钱,一只母鸡3块钱,3只小鸡一块钱,一个农夫用100块钱买100只鸡(不许解方程),怎么实现?编写java程序。
我后来想了想给出如下的程序;
public static void main(String[] args) {
for(int a1=1;a1<20;a1++){
for(int a2=1;a2<(100-(a1*5))/3;a2++){
int a3 = (100-5*a1-3*a2)*3;
if(a1+a2+a3==100)
System.out.println(“公鸡:”+a1+”只,母鸡:”+a2+”只,小鸡:”+a3+”只”);
}
我感觉这没有问题啊,可是这哥们看了后,说不能用for循环,我晕,这不用循环怎么做???我其实是一菜鸟,又不好意思在学弟面前丢脸,求指教!急!

6 个回复

倒序浏览
这不用for怎么实现?还真纠结,只不过 顺序可变,LZ这里顺序 公鸡,母鸡,小鸡,也可用 母鸡,公鸡,小鸡 顺序来实现
若用 小鸡,公鸡,母鸡的顺序 有点杂,这里我实现下....


对了,LZ 若你那个哥们不用for实现的,告诉我一下....{:soso_e141:}
  1.    for(int a1=3;a1<100;a+=3) {
  2.        for(int a2=1;a2<(100-a1/3)/5;a2++) {
  3.         int a3=(100-a1/3-a2*5)/3;
  4.         int temp=(100-a1/3-a2*5)%3;
  5.         if(temp==0&&a1+a2+a3==100) {
  6.        System.out.println("小鸡:"+a1+"公鸡:"+a2+"母鸡:"+a3);
  7.         }
  8.    }
复制代码
回复 使用道具 举报
弱弱滴问一句,不用for能用while吗?
回复 使用道具 举报
本质还是排列组合问题,从100中取出满足题目中两个条件的三个数
回复 使用道具 举报
KILL掉你那哥们,,,
回复 使用道具 举报
史政法 发表于 2013-2-15 06:22
KILL掉你那哥们,,,

good idea;P
回复 使用道具 举报
/*
今天一哥们问我一个java题,大概意思是,
一只公鸡5块钱,一只母鸡3块钱,3只小鸡一块钱,
一个农夫用100块钱买100只鸡(不许解方程),怎么实现?
编写java程序。
虽然,我的递归还是没有学会,但是,
我相信,任何的递归都应该可以改写成循环的形式,
所以,反过来看,循环可不可以写成递归呢?至少这道题就可以实现
递归与循环的转换,这道题也应该是一个经典例子。
因为,如果可以做出此题,至少知道递归与循环的一个简单关系。
但是,我的递归学得确实不好,无论从效率与其他性能考虑,
这道题写得很不好。
如果需要一个高效可靠的递归,或许华哥和奇哥等人能够解决。
我在这里期待更好的递归解决方法。
虽然写得不好,但是本着互相学习的精神,我还是把他发上来吧。
*/
class  sum123
{
        public static void main(String[] args)
        {
                System.out.println("哥们,要想知道答案,请耐心等待10秒钟吧!");
                digui(1,1,98);
        }
        public static void digui(int a1,int a2,int a3)
        {
                if(a1<=0||a2<=0||a3<=0||a1>=20||a2>=33||a3>=100)
                {
                        return;
                }
                else
                {
                        if(a1>0&&a1<20)
                        {
                                digui(a1+1,a2,99-a1-a2);
                        }
                         if(a2>0&&a2<33)
                        {
                                digui(a1,a2+1,99-a1-a2);
                        }
                        if(a1+a2+a3==100&&a1*15+a2*9+a3==300)
                        {
                                System.out.println("哈哈,答案出来喽:");
                                System.out.println("公鸡:"+a1+"只,母鸡:"
                        +a2+"只,小鸡:"+a3+"只");
                                System.exit(0);//我现在才知道,这一代码是实在没有办法的人才干的事。
                        }
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马