Java思维题

来源:互联网 发布:linux卸载jenkins 编辑:程序博客网 时间:2024/05/30 04:41
题目: 100匹马100袋粮食大马驮三袋小马驮两袋,两个小马崽驮一袋,问大马小马小马崽各多少匹?  java代码如何实现?
暴力穷举法:
public class HowManyHorses {
    public static void main(String[] args) {
        final int HORSE_NUMBER = 100;
        final int FOOD_NUMBER = 100;
        for (int bigHorseNumber = 0; bigHorseNumber <= HORSE_NUMBER; bigHorseNumber++) {
            for (int smallHorseNumber = 0; smallHorseNumber <= HORSE_NUMBER; smallHorseNumber++) {
                for (int ponyNumber = 0; ponyNumber <= HORSE_NUMBER; ponyNumber++) {
                    if (bigHorseNumber + smallHorseNumber + ponyNumber == HORSE_NUMBER &&
                        ponyNumber % 2 == 0 &&
                        bigHorseNumber * 3 + smallHorseNumber * 2 + ponyNumber / 2 == FOOD_NUMBER) {
                        System.out.println(bigHorseNumber + " " + smallHorseNumber + " " + ponyNumber);
                    }
                }
            }
        }
    }
}
最简单的问题,最暴利的方法---减去一层循环
public class HowManyHorse {
    public static void main(String[] args) {
        final int HORSE_NUMBER = 100;
        final int FOOD_NUMBER = 100;
        int ponyhorseNumber = 0;
        for (int bigHorseNumber = 0; bigHorseNumber <= HORSE_NUMBER/2; bigHorseNumber++) {
            for (int smallHorseNumber = 0; smallHorseNumber <= HORSE_NUMBER; smallHorseNumber++) {
                    ponyhorseNumber = HORSE_NUMBER-bigHorseNumber-smallHorseNumber;
                    if (
                        ponyhorseNumber % 2 == 0 &&
                        bigHorseNumber * 3 + smallHorseNumber * 2 +ponyhorseNumber / 2 == FOOD_NUMBER) {
                        System.out.println(bigHorseNumber + " " + smallHorseNumber + " " + ponyhorseNumber);
                    
                }
            }
        }
    }
}



0 0
原创粉丝点击