二十四点
来源:CCF

标签:

参考资料:

相似题目:

背景
二十四点是一款著名的纸牌游戏,其游戏的目标是使用 3 个加减乘除运算使得 4张纸牌上数字的运算结果为 24。

题目
定义每一个游戏由 4 个从 1-9 的数字和 3 个四则运算符组成,保证四则运算符将数字两两隔开,不存在括号和其他字符,运算顺序按照四则运算顺序进行。其中加法用符号 + 表示,减法用符号 - 表示,乘法用小写字母 x 表示,除法用符号 / 表示。在游戏里除法为整除,例如 2 / 3 = 0,3 / 2 = 1, 4 / 2 = 2。
老师给了你 n 个游戏的解,请你编写程序验证每个游戏的结果是否为 24 。

输入
从标准输入读入数据。第一行输入一个整数 n,从第 2 行开始到第 n + 1 行中,每一行包含一个长度为 7的字符串,为上述的 24 点游戏,保证数据格式合法。

输出
输出到标准输出。
包含 n 行,对于每一个游戏,如果其结果为 24 则输出字符串 Yes,否则输出字符串 No。

输入样例
10
9+3+4x3
5+4x5x5
7-9-9+8
5x6/5x4
3+5+7+9
1x1+9-9
1x9-5/9
8/5+6x9
6x7-3x6
6x4+4/5

输出样例
Yes
No
No
Yes
Yes
No
No
No
Yes
Yes

样例解释
9+3+4 × 3 = 24
5+4 × 5 × 5 = 105
7 − 9 − 9+8= −3
5 × 6/5 × 4 = 24
3 + 5 + 7 + 9 = 24
1 × 1+9 − 9=1
1 × 9 − 5/9 = 9
8/5 + 6 × 9 = 55
6 × 7 − 3 × 6 = 24
6 × 4 + 4/5 = 24

思路:
用栈的思想,建立数值栈和符号栈,每次把数字压入栈,遇到乘法和除法就优先计算值再压入栈,把负数改成正数压入栈,最后对数值栈进行相加。(由于没有评测,所以也不知道对不对)

#include<cstdio>
#include<cstring>
#include<iostream>
#include<stack>
using namespace std;int n;
char a[10];stack<int> num;
stack<char> sign;
int all;
int main()
{cin>>n;getchar();for(int i=1;i<=n;i++){gets(a);all=0;while(!num.empty())num.pop();while(!sign.empty())sign.pop();int j=0;while(j<strlen(a)){if(a[j]<='9'&&a[j]>='0'){num.push(a[j]-'0');}elseif(a[j]=='+'){sign.push(a[j]);}elseif(a[j]=='-'){sign.push('+');num.push((a[j+1]-'0')*(-1));j++;}elseif(a[j]=='x'){int ans=num.top();num.pop();num.push(ans*(a[j+1]-'0'));j++;}else{int ans=num.top();num.pop();num.push(ans/(a[j+1]-'0'));j++;}j++;}while(!num.empty()){all+=num.top();num.pop();}if(all==24) printf("Yes\n");else printf("No\n");
}return 0;
}

201903-2 二十四点相关推荐

  1. 从LeetCode 679. 24 Game--C++ 解法--二十四点 到穷举24点所有可能性-24点大全

    从LeetCode 679. 24 Game–C++ 解法–二十四点 到穷举24点所有可能性 此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解文章分类:LeetCode题 ...

  2. CCF-CSP 201903-2 二十四点 Python语言 模拟栈实现

    项目场景: 二十四点问题本质是处理表达式,一提到处理表达式第一反应大概就是使用栈来处理,虽然网上大部分使用python语言处理二十四点问题都是利用强大的eval()函数,但我仍然想要使用python的 ...

  3. CCF CSP201903-2二十四点

    CCF CSP201903-2二十四点 题目描述 要点分析 此题是典型的中缀表达式的求解问题, 可以采用堆栈求解. 具体计算思路: 使用两个栈, num用于存储操作数, opt用于存储操作符 从左往右 ...

  4. CCF201903-2 二十四点(100分)【表达式计算】

    问题链接:CCF201903-2 二十四点 问题分析: 表达式计算问题,关键是对输入流进行处理,需要考虑表达式中运算符的优先级.简单的逻辑,用穷举法就可以了. 用Python语言来实现的话,问题就简单 ...

  5. 『牛角书』基于JS实现的鸿蒙游戏——二十四点纸牌

    目录 前言 概述 正式开始 一.创建项目 二.编码 1.项目结构 2.实现思路 3.主要代码块 三.页面及功能展示 1.运算正确 2.运算错误 3.换一批及重置 本人项目仓库链接 前言 相信大家都有玩 ...

  6. CCF 201903-2 二十四点 用栈模拟简单计算器

    二十四点 来源:CCF 背景 二十四点是一款著名的纸牌游戏,其游戏的目标是使用 3 个加减乘除运算使得 4张纸牌上数字的运算结果为 24. 题目 定义每一个游戏由 4 个从 1-9 的数字和 3 个四 ...

  7. 「csp模拟试题 201903-2」二十四点 C/C++ 100分

    目录 题目 输入输出样例 题解思路 题解源码(c/c++) 题目 :二十四点 [问题描述] 定义每一个游戏由 4 个从 1-9 的数字和 3 个四则运算符组成,保证四则运算符将数字两两隔开,不存在括号 ...

  8. C语言 解决CCF 二十四点问题

    利用 C 语言 解决 CCF题库中的二十四点问题 特别致谢:原博主程序 编译环境: IDE:DEV-C++ 语言:C语言 CCF CSP官方往年题库链接点我进入 1. 题目如下: 解题思路: 此题难点 ...

  9. csp试题2:二十四点

    csp试题2:二十四点 题目 分析 代码 总结 题目 问题描述       二十四点是一款著名的纸牌游戏,其游戏的目标是使用3个加减乘除运算使得4张纸牌上数字的运算结果为24.       定义每一个 ...

  10. 201903-2二十四点[20201213封笔题目]没写呢

    2020.12.13 csp今天就考试完了,我用了三天的时间,倒着刷完了所有的第一题,正着刷第二题,就到了这里.暂时结束吧. 哎,发现现在的考试越来越难了. 今天的考试连第二个体都过不了. 我死了. ...

最新文章

  1. 如何将文件放到服务器,如何将服务器文件放到云服务器
  2. JavaScript-回调函数
  3. Shell(6)——array的删改unset
  4. python 随机获取数组元素_Python创建二维数组的正确姿势
  5. 【剑指offer】面试题33:二叉搜索树的后序遍历序列(Java)
  6. C语言里面双分号是啥意思,问什么C程序里总是提示缺少分号;,而明明有分号?...
  7. 【转】从TXT导入到dataGridView
  8. ubuntu mysql 5.0_ubuntu server 8.04 下的mysql5.0的集群实验
  9. Java使用Excel的问题:自动跳过空字段、中文加拼音和时间处理错误的解决方法
  10. steam卡价越来越高,steam搬砖项目还能玩么?
  11. hive  explode(split(split_feild,‘split_char‘)) split_feild为null 整条数据会丢掉
  12. AI教程:自定义参考线
  13. 《30岁之前的每一天》阅读笔记(一)
  14. Axure 点图片外区域即隐藏_好用的图片处理软件JixiPix Hand Tint Pro
  15. 对缓冲、带宽、码率的理解
  16. 网页版在线聊天java Socket实现
  17. java的7种位运算符
  18. Unity实现子弹射向准心位置
  19. Stateflow使用笔记
  20. AC-DMIS 5.6量块程序 2020

热门文章

  1. 10款实用苹果Siri快捷指令分享
  2. 怎样关闭域用户电脑中的趋势杀毒软件
  3. 为什么WiFi自动信道选到的信道多数在1/6/11
  4. 音频编码格式与术语汇总
  5. Redis布隆过滤器和布谷鸟过滤器
  6. Android WIFI的管理方法
  7. 取之盈:微信电脑多开代码、电脑多开微信bat文件
  8. 夏普电视服务器维修,夏普液晶电视机通病维修方法
  9. 普通文档怎么换成php,腾讯在线文档如何转化为普通文档
  10. 解决electron打包的程序报错 A JavaScript error occurred in the main问题