用Java编写代码实现24点游戏
时间: 2024-03-22 20:40:00 浏览: 11
好的,以下是一个简单的 Java 代码实现 24点游戏:
```java
import java.util.Scanner;
public class TwentyFourGame {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] nums = new int[4];
for (int i = 0; i < 4; i++) {
System.out.print("请输入第" + (i + 1) + "个数字:");
nums[i] = scan.nextInt();
}
if (compute24(nums, 4)) {
System.out.println("恭喜你,可以通过加减乘除得到24!");
} else {
System.out.println("很遗憾,无法通过加减乘除得到24!");
}
scan.close();
}
public static boolean compute24(int[] nums, int n) {
if (n == 1) {
return Math.abs(nums[0] - 24) < 1e-6;
}
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int[] newNums = new int[n - 1];
for (int k = 0, idx = 0; k < n; k++) {
if (k != i && k != j) {
newNums[idx++] = nums[k];
}
}
for (int k = 0; k < 4; k++) {
if (k == 0) {
newNums[n - 2] = nums[i] + nums[j];
} else if (k == 1) {
newNums[n - 2] = nums[i] - nums[j];
} else if (k == 2) {
newNums[n - 2] = nums[i] * nums[j];
} else {
if (nums[j] != 0) {
newNums[n - 2] = nums[i] / nums[j];
} else {
continue;
}
}
if (compute24(newNums, n - 1)) {
return true;
}
}
}
}
return false;
}
}
```
这个程序通过递归的方式,枚举所有可能的加减乘除组合,判断是否能得到 24。程序首先读取 4 个整数,然后调用 `compute24` 方法来计算是否可以通过加减乘除得到 24。如果可以,程序输出“恭喜你,可以通过加减乘除得到24!”;否则,程序输出“很遗憾,无法通过加减乘除得到24!”。