CCF 二十四点 201903-2试题(c++)

该博客介绍了如何解决CCF 201903-2试题,涉及二十四点游戏的C++实现。博主分享了算法思路,包括判断算术符号、计算过程的四种情况,并提供了代码实现。虽然测试用例通过,但博主对得分30分表示困惑。
摘要由CSDN通过智能技术生成

在这里插入图片描述
大概思路如下:
用字符数组ch接收算式字符串,依次判断算术符号是否为乘除号。用数组flag存其结果是否为24,是为1,否为0。

计算过程如下:
一、若op1为乘号或者除号:
①若op2也为乘号或者除号,形式有两种:xxx和xx+(注意题目中用例的乘号是x不是*!!),两种形式都可按顺序计算,即((ab)c)d)和(((ab)c)+d);
(abcd代表算式的四个数字,用括号代表计算顺序,按计算顺序调用计算函数compute())
②若op2不为乘号或者除号,形式也有两种:x+x和x++,两种形式都可按相同顺序计算,即((a
b)+(c
d))和((a
b)+(c+d));
二、若op1不为乘号或者除号:
①若op2为乘号或者除号,形式有两种:+xx和+x+,两种形式都可按相同顺序计算,即(a+((bc)d))和(a+((bc)+d));
②若op2不为乘号或者除号,形式也有两种:++x和+++,两种形式都可按相同顺序计算,即(a+(b+(c
d)))和(a+(b+(c+d)));

代码如下:

#include<iostream>
using namespace std;

//判断是否为乘除法
bool iscc(char c)
{
   
	if(c=='x'||c=='/') 
		return true;
    else 
		return false;
}

int compute(char op,int num1,int num2)
{
   
    
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值