24点算法java_Java24点计算24是流行的扑克游戏.其方法是任意取出4张牌,AJQK王牌算1,其它牌按点数计算,花色不计.目标是通过加、减、乘、除和括号最终算出24.设计一个程序,输入4个数字...

Java24点

计算24是流行的扑克游戏.其方法是任意取出4张牌,A J Q K 王牌 算 1,其它牌按点数计算,花色不计.

目标是通过加、减、乘、除和括号最终算出24.设计一个程序,输入4个数字(1~10)

则列出所有可能计算结果为24的方案.要求:

方案不能重复(加法乘法交换律等算不同方案).

计算中局部可以为分数,结果为整数即可(如 3 3 7 7 算法:(3 + 3/7)*7)

如果没有找到方案输出:

public class Test2

{

public void Fun(int a,int b,int c,int d)

{

int op1,op2,op3 = 0;

String x = null,y = null,z = null;

double n = 0;

for (op1 = 0; op1 < 4; op1++)

{

switch (op1)

{

case 0:

n = a + b;

x = "+";

break;

case 1:

n = a - b;

x = "-";

break;

case 2:

n = a * b;

x = "*";

break;

case 3:

n = a / b;

x = "/";

break;

}

for (op2 = 0; op2 < 4; op2++)

{

switch (op2)

{

case 0:

n = n + c;

y = "+";

break;

case 1:

n = n - c;

y = "-";

break;

case 2:

n = n * c;

y = "*";

break;

case 3:

n = n / c;

y = "/";

break;

}

for (op3 = 0; op3 < 4; op3++)

{

switch (op3)

{

case 0:

n = n + d;

z = "+";

break;

case 1:

n = n - d;

z = "-";

break;

case 2:

n = n * d;

z = "*";

break;

case 3:

n = n / d;

z = "/";

break;

}

if (n == 24.0)

{

System.out.println("(" + "(" + a + x + b + ")" + y + c

+ ")" + z + d + ")");

System.out.println("---------------------------");

}

}

}

}

}

public void Scan()

{

int n = 0;

while (n < 10000)

{

int a = (int) ((Math.random() * 9) + 1);

int b = (int) ((Math.random() * 9) + 1);

int c = (int) ((Math.random() * 9) + 1);

int d = (int) ((Math.random() * 9) + 1);

Fun(a,b,c,d);

n++;

}

}

/**

* @param args

*/

public static void main(String[] args)

{

Test2 t = new Test2();

t.Fun(1,2,3,4);

t.Fun(4,6,9,5);

t.Scan();

}

}

注:有的结果正确,有的不正确,这是为啥?

例如:

((4*2)*3)-5)

---------------------------

((4*2)*3)/5)

但是不是24

作业帮用户2016-12-07举报

6c0a0adef10d1043fa4f41a7897345ed.png

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

你的专属·bug

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值