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