许多人小的时候可能都玩过计算24的游戏。从一副扑克牌中任意取出4张,根据点数用加、减、乘、除计算出24。花色不计,点数:A、J、Q、K都算1,其它牌算本身的牌点。 用计算机搜索算法的解法有很多。一般是用穷举法罗列每一种情况。本程序打算用一种不同寻常的算法:随机地交换牌的位置,随机地产生运算符,看看是符合要求,大量重复这个过程,看看能否碰上运气。实验表明,当试验次数很大的时候,“运气”的概率是很高的。 要求编写java代码,实现效果:先是随机地抽取4张牌,然后用随机试探的方法求解。只要找到一个解就可以了。 需要考虑计算结果为分数的情况:( 3 + (3 / 7) ) * 7
时间: 2023-02-11 13:48:43 浏览: 85
这个问题可以使用随机算法来解决。首先,随机地抽取4张牌,然后在随机地产生运算符并进行计算。如果计算结果为24,则找到了一个解。如果不是,则重复这个过程。在试验次数足够大的情况下,运气概率会很高。
Java代码如下:
```java
import java.util.Random;
public class Main {
public static void main(String[] args) {
int[] cards = new int[4];
char[] ops = new char[3];
Random random = new Random();
while (true) {
for (int i = 0; i < 4; i++) {
cards[i] = random.nextInt(13) + 1;
}
for (int i = 0; i < 3; i++) {
ops[i] = random.nextInt(4) == 0 ? '+' : random.nextInt(4) == 1 ? '-' : random.nextInt(4) == 2 ? '*' : '/';
}
if (calculate(cards, ops) == 24) {
System.out.println("找到一组解: " + cards[0] + ops[0] + cards[1] + ops[1] + cards[2] + ops[2] + cards[3]);
break;
}
}
}
private static double calculate(int[] cards, char[] ops) {
double res = 0;
res = cards[0];
for (int i = 0; i < 3; i++) {
switch (ops[i]) {
case '+':
res += cards[i + 1];
break;
case '-':
res -= cards[i + 1];
break;
case '*':
res *= cards[i + 1];
break;
case '/':
res /= cards[i + 1];
break;
}
}
return res;
}
}
```
上面的代码随机生成4张牌和3个运算符,并使用calculate函数计算出结果,如果结果是24,就打印出这组解。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)