题目:
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);
}
}
}
}
}
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);
}
}
}
}
}

本文通过两种Java实现方法解决了经典的100匹马驮100袋粮食问题,探讨了使用暴力穷举法解决数学问题的具体实现细节。
1万+

被折叠的 条评论
为什么被折叠?



