黑马程序员技术交流社区

标题: 小练习的分析 [打印本页]

作者: 孙铭泽    时间: 2012-8-23 20:52
标题: 小练习的分析
         * 100文钱买一百只鸡 公鸡5文钱,母鸡3文钱,小鸡3只一文钱,三种鸡必须都有。

A:public static void method_1() {
            for (int x = 1; x < 20; x++) {
                for (int y = 1; y < 32; y++) {
                    int z = 100 - x - y;
                    if ((z % 3 == 0) && (x * 5 + y * 3 + z / 3 == 100)) {
                        System.out.println("公鸡" + x + "只," + "母鸡" + y + "只," + "小鸡"
                                + z + "只");
                    }
                }
            }
        }

这是这道题的一种做法,但是不打易理解,有谁给我来一中好点易理解的方法解决一下。

作者: 唐杨老师    时间: 2012-8-23 21:39
你写这个方法我感觉已经是最好理解的了


公鸡4只,母鸡18只,小鸡78只
公鸡8只,母鸡11只,小鸡81只
公鸡12只,母鸡4只,小鸡84只

作者: 张扬123    时间: 2012-8-23 22:23
这是经典的java百钱百鸡。这个貌似是高中还是初中的题目,思路理清了就很简单了。
public static void method_1() {
            for (int x = 1; x < 20; x++) {定义公鸡数为x,因为5文一只,所以100除以5就是20
                for (int y = 1; y < 32; y++) {//此处我觉得应该是33.
                    int z = 100 - x - y; 这个相当于数学运算里的x+y+z=100
                    if ((z % 3 == 0) && (x * 5 + y * 3 + z / 3 == 100)) {小鸡一文钱三只,可视为一只三分之一文钱
                        System.out.println("公鸡" + x + "只," + "母鸡" + y + "只," + "小鸡"
                                + z + "只");
                    }
                }
            }
        }
其实这个算是很简单易懂的了。其实还有一种是三层for循环的,不知道你是否觉得比那个难懂呢?
public class Chicken {
        public static void main(String args[]){
                int x,y;
                double z;
                for(x=1;x<100;x++){
                        for(y=1;y<100;y++){
                                for(z=1;z<100;z++){
                                        if(x+y+z==100&&5*x+3*y+z/3==100){
                                                System.out.println(x+" "+y+" "+z);
                                        }
                                }
                        }
                }
        }

}





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