题目
常见游戏规则:
从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。
基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。
1.算法分析
扑克牌二十四点:任意给4张扑克牌,只能够用加、减、乘、除以及适当的括号连接四张牌。无论顺序,使计算结果为24,或者宣布无解。每张牌必须运算,并且只能运算一次。A,J,Q,K可设置为1,11,12,13。
先将两个数进行运算,当有第三个数时将其中两个数的运算用括号括起来作为一个数和另一个数运算,当有第四个数时同类。方法如下:
1、((a op1 b)op2 c)op3 d
2、(a op1 b)op2 (c op3 d)
3、(a op1 (b op2 c)op3 d)
4、a op1((b op2 c) op3 d)
5、a op1 (b op2(c op3 d))
两种情况综合,每次是给4张牌,构成表达式64*5=320,找到计算结果为24的,然后打印。
2.概要设计
3.代码
package pro;
import java.util.Random;
import java.util.Scanner;
/*
-
扑克牌二十四点:任意给4张扑克牌,只能够用加、减、乘、除以及适当的括号连接四张牌。
-
无论顺序,使计算结果为24,或者宣布无解。每张牌必须运算,并且只能运算一次。
-
A,J,Q,K可设置为1,11,12,13
-
/
public class six
{
static char op[] = { ‘#’, ‘+’, ‘-’, '’, ‘/’ };// 存储运算符
// 定义随机产生的四个数
static int number[] = new int[4];
// 计算x op y的值
static float cal(float x, float y, int op)
{
float result = 0;
switch (op)
{
case 1:
result = x + y;
break;
case 2:
r