百鸡问题

百鸡问题:公鸡5¥/只,母鸡3¥/只,小鸡3只/¥,若100¥买100只鸡,问其中公鸡、母鸡、小鸡各多少?

解法一:直接计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Main {
public static void main(String[] args) {
int k;
boolean isAns = false;
for (int i = 1; i < 20; i++) { //i表示公鸡个数
for (int j = 1; j < 33; j++) { //j表示母鸡个数
k = 100 - i - j; //k/3表示小鸡个数
if ((k % 3 == 0) && (5 * i + 3 * j + k / 3 == 100)) {
System.out.println("公鸡" + i + "只,母鸡" + j + "只,小鸡" + k + "只");
isAns = true;
}
}
}
if (!isAns) {
System.out.println("问题无解!");
}
}
}

解法二:返回类型为二维数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Main {
public static int[][] f() { //计算的函数,返回类型为二维数组
int k, row = 1;
int[][] ans = new int[20][3];
for (int i = 1; i < 20; i++) { //i表示公鸡个数
for (int j = 1; j < 33; j++) { //j表示母鸡个数
k = 100 - i - j; //k/3表示小鸡个数
if ((k % 3 == 0) && (5 * i + 3 * j + k / 3 == 100)) {
ans[row][0] = i;
ans[row][1] = j;
ans[row][2] = k;
row++;
}
}
}
ans[0][0] = row;
return ans;
}

public static void main(String[] args) {
int[][] ans = f();
for (int i = 1; i < ans[0][0]; i++) {
System.out.println("公鸡" + ans[i][0] + "只,母鸡" + ans[i][1] + "只,小鸡" + ans[i][2] + "只");
System.out.println();
}
if (ans[0][0] == 0) {
System.out.println("本题无解!");
}
}
}

运行结果

1
2
3
4
5
公鸡4只,母鸡18只,小鸡78只
公鸡8只,母鸡11只,小鸡81只
公鸡12只,母鸡4只,小鸡84只

Process finished with exit code 0