【算法练习】- 百钱百鸡

题目描述:假设有100钱刚好能买100只鸡,其中公鸡5钱一只,母鸡3钱一只,小鸡1钱3只,问公鸡母鸡小鸡各多少只?

 

这里使用了for循环和while循环遍历结果集;

/**
 * 百钱百鸡问题
 * @author juihai
 * @date 2021/7/19
 */
public class HundredMoneyHundredChickenTest {

    /**
     * 假设有100钱刚好能买100只鸡,其中公鸡5钱一只,母鸡3钱一只,小鸡1钱3只,问公鸡母鸡小鸡各多少只?
     *
     */
    public static void main(String[] args) {
        //实现1
        solutionV1();
        //实现2
        solutionV2();
    }

    private static void solutionV1(){
        int count = 0;
        int z,total = 0;

        //公鸡为x,则x取值为0~20
        for(int x=0;x<=20;x++){
            //母鸡为y,则y取值范围为0~33
            for(int y=0;y<=33;y++){
                count++;
                //小鸡为z,取值为100-x-y
                z = 100 -x -y;
                if(z%3==0 && 5*x+3*y+z/3==100 ){
                    total++;
//                        System.out.println("公鸡:" + x +"只,母鸡:"+ y +"只,小鸡:"+z+";共执行:"+count);
                    break;
                }
            }
        }
        System.out.println("共执行:"+count+"次;共"+total+"种结果。");
    }

    private static void solutionV2(){
        //设公鸡为x,取值范围为0~20
        //母鸡为y,则y取值范围为0~33
        //小鸡为z,取值为100-x-y
        int z=0,count=0,total=0;
            int x=0;
            while(x<=20){
                int y=0;
                while (y<=33){
                    count++;
                    z = 100 -x -y;
                    if(z%3==0 && 5*x+3*y+z/3==100){
                        total++;
//                        System.out.println("公鸡:" + x +"只,母鸡:"+ y +"只,小鸡:"+z+";共执行:"+count);
                        break;
                    }
                    y++;
                }
                x++;
            }
        System.out.println("共执行:"+count+"次;共"+total+"种结果。");
    }
}

 

 输出内容: 

  共执行:640次;共4种结果。
  共执行:640次;共4种结果。

  

posted @ 2021-07-19 23:32  多搞学习少搞事情  阅读(190)  评论(0编辑  收藏  举报