7-3 用扑克牌计算24点

7-3 用扑克牌计算24点 (25point(s))

一副扑克牌的每张牌表示一个数(J、Q、K 分别表示 11、12、13,两个司令都表示 6)。任取4 张牌,即得到 4 个 1~13 的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式。每个数只能参与一次运算,4 个数顺序可以任意组合,4 个运算符任意取 3 个且可以重复取。运算遵从一定优先级别,可加括号控制,最终使运算结果为 24。请输出一种解决方案的表达式,用括号表示运算优先。如果没有一种解决方案,则输出 -1 表示无解。

输入格式:
输入在一行中给出 4 个整数,每个整数取值在 [1, 13]。

输出格式:
输出任一种解决方案的表达式,用括号表示运算优先。如果没有解决方案,请输出 -1。

输入样例:
在这里插入图片描述
思路:分成五种优先级情况,然后将所有符号数字遍历一遍,即可成功。

#include<bits/stdc++.h>
using namespace std;
double get(double a,char c,double b)//两个数之间的运算 
{
   
	switch(c)
	{
   
		case '+':return a+b;break;
		case '-':return a-b;break;
		case '*':return a*b;break;
		case '/':return a/b;break;
	}
}
int main()
{
   
	int i,j;
	int temp=1;
	int a,b,c,d,e,f;
	float num[4];
	char cha[4]={
   '+','-','*','/'};
	cin>>num[0]>>num[1]>>num
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算二十四点是一个经典的扑克牌游戏,玩家需要通过运算使得手中的四张牌的运算结果为24。在Java中,我们可以使用递归方法实现这个计算过程。 首先,我们需要定义一个递归函数,该函数的输入参数是一个存储扑克牌数字的数组和一个表示运算结果是否为24的布尔值。在每一轮递归中,我们会对数组中的所有可能的数字组合进行计算,并将计算结果递归传递给下一层。 在计算结果为24的情况下,我们会将布尔值设为true,并在递归结束后返回该值。如果递归过程中没有找到计算结果为24的情况,布尔值会保持为false,最终返回该值。 具体的计算逻辑如下: 1. 首先定义一个函数,接收一个数组和一个布尔值作为参数。 2. 如果数组长度为1且该数字等于24,则返回true。 3. 对于数组中的每个数字,我们选择其中两个数字进行四则运算,并将结果存储在一个新的数组中。 4. 递归调用该函数,将新数组和布尔值作为参数传递。 5. 如果递归函数返回true,则表示找到了计算结果为24的情况,直接返回true。 6. 对于每一对数字的四则运算,我们都需要进行加法、减法、乘法和除法运算,并将得到的结果进行递归计算。 7. 如果在该函数的任何运算过程中找到了计算结果为24的情况,直接返回true。 8. 如果以上步骤中都没有找到计算结果为24的情况,则返回false。 通过以上递归方法,我们可以在Java中完成扑克牌计算二十四点的游戏。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值