CCF201903-2二十四点100分

CCF认证c++历年真题及部分代码答案 CCF考试职业认证c++历年真题及部分代码答案 立即下载

最近在刷CCF上的题,这道题我研究了好久,查了好多优快云上优秀的文章。基本上思路上我能理解的都是用JAVA和python写的,然而,这代码真心看不懂。。。嘤嘤嘤~~~~ 话说那个用逆波兰式的好高大上啊,好想拥有。。。。

于是,我决定自己研究研究。。。。。

解题思路:

对于这种表达式的题,用堆栈食用更佳。创建一个栈q,遍历表达式的字符串,如果是1到9的数字则入栈;如果遇到乘法和除法符号,则弹出栈顶元素跟符号后的数字运算,运算结果存入栈中;如果遇到减号,则将符号后的数字变为它的负数,再入栈。最后,依次弹出栈顶元素进行相加。和为24,输出Yes,否则,输出No。

注意:

1、我们是按string类型存储该表达式的,将数字字符入栈之间需要将类型转换为int类型。

2、运算乘法和除法的时候,是将符号前后数字运算,必须先将原先栈顶元素弹出,再将结果入栈。

完整代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<stack>
using namespace std;
int main()
{
    int n;
    stack <int> q;
    scanf("%d",&n);
    string s;
    while(n--)
    {
        cin>>s;

        for(int i=0;i<=6;i++)
        {
            if(s[i]<='9'&&s[i]>'0')
            {
                q.push(s[i]-'0');
               
            }else if(s[i]=='x'||s[i]=='/')
            {
                int x=0,y=0;
                y=q.top();
                switch(s[i])
                {
                    case 'x':x=y*(s[i+1]-'0');break;
                    case '/':x=y/(s[i+1]-'0');break;
                }
                q.pop();
                q.push(x);
                i++;
            }else if(s[i]=='-')
            {
                q.push(-(s[i+1]-'0'));
                i++;
            }
        }
        int sum=0;
        while(!q.empty())
        {
            //printf("%d ",q.top());
            sum+=q.top();
            q.pop();
        }
        if(sum==24) printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}

 

STM32F030C8烧录实战:用J-Link Commander实现一键批量烧写(附完整脚本) 本文详细介绍了如何使用J-Link Commander工具链实现STM32F030C8的一键批量烧录,包括环境配置、批处理脚本设计、命令脚本解析以及生产环境实战技巧。通过自动化烧录流程,显著提升效率并降低人为错误,特别适合量产和频繁迭代的开发场景。 阅读详情

相关推荐

机械工程师如何用Codex实现CAD自动化:从重复劳动到智能设计

在机械设计领域,CAD二次开发长期面临学习门槛高、维护成本大的难题。随着AI编程助手如Codex的出现,通过自然语言生成可执行代码,工程师无需精通编程即可实现图纸批量处理、BOM表自动生成、参数化建模等任务。这种技术将重复性操作自动化,显著提升设计效率,让工程师聚焦于核心创新。应用场景涵盖批量修改图纸属性、跨软件数据流转、自动打印等。本文分享机械工程师利用Codex落地自动化的实战经验与避坑指南。

weixin_32296621的博客 359

【栈的应用】二十四点

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

weixin_51649775的博客 207

Linux内存优化:KSM技术原理与实践指南

内存共享是提升虚拟化环境资源利用率的关键技术,其核心原理是通过识别相同内容的内存页进行合并。Linux内核的KSM(Kernel Samepage Merging)机制采用红黑树数据结构管理内存页,通过多级哈希比较算法实现高效合并。该技术能显著降低物理内存消耗,提升CPU缓存命中率,特别适用于运行大量相似虚拟机实例的场景。在容器化和云计算环境中,KSM与NUMA优化、内存气球等技术协同,可实现40%-60%的内存节省。典型应用包括金融云平台的高密度虚拟机部署,以及Kubernetes集群的基础镜像优化。

weixin_28730353的博客 369

CCF CSP——二十四点 (201903-2)

题目背景       二十四点是一款著名的纸牌游戏,其游戏的目标是使用 3 个加减乘除运算使得 4张纸牌上数字的运算结果为 24。 题目描述:       定义每一个游戏由 4 个从 1-9 的数字和 3 个四则运算符组成,保证四则运算符将数字两两隔开,不存在括号和其他字符...

qq_44408319的博客 665

华为云Stack 8.X 流量模型分析(一)

​ 当内部需要提供对外服务时(如对外发布Web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。​ 内部地址要访问公网上的服务时(如Web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。

Ciyaso的博客 3244

WPF 解决listview值更改时页面没有刷新

WPF 解决listview值更改时页面没有刷新。

weixin_52475977的博客 1385

CCF算法笔记2 二十四点

分析:题目很容易理解,我们只需要模拟四则运算即可,题目设限简单,我们只需要进行四个个位数的加减乘除运算即可,并且还不包括括号。当结果等于24时,即可输出结果“Yes”,否则输出“No”。 这道题的解题方法有很多, 首先最简单的暴力法,因为只设计到四个个个位数加减,我们只需要把所有情况都列出来即可,一共4^3=64种,这种方法空间占用比较少,因为没有涉及到STL,但是时间比较多,因为需要逐个判断。...

qq_43269048的博客 795

YOLOv8优化:独家创新(SC_C_Detect)检测头结构创新,实现涨点 | 检测头新颖创新系列

独家创新(SC_C_Detect)检测头结构创新,适合科研创新度十足,强烈推荐

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 4873

【CCF】二十四点

解题思路: 用一个栈来存放数字,遍历字符串:①若遇到数字则直接推入栈中;②若遇到乘除符号则取出栈顶元素,然后将它与乘除符号做运算后的结果数字推入栈中;③若遇到加减符号则将加减符号后的数字直接推入栈中(减号推入负数)。字符串遍历完成后,开始清栈大甩卖,把栈中所有的数字累加到sum,判断sum是否等于24,输出Yes或No即可。 100分代码: #include <bits/s...

麦芽雪冷萃 3265

PointPillars代码详解及实现

SourceURL:file://文字文稿1和2D图像的深度学习目标检测很不相同,点云数据具有两个显著特征,为了将图像领域卷积神经网络做模式识别的经验引入三维点云中,一些深度学习方法采用了三维卷积方法或者是将点云投射为2维深度图,还有一类方法是使用鸟瞰视角Bird’s Eye View,来组织点云数据的输入,相比于2维深度图,鸟瞰图不存在遮挡问题但是数据分布更加稀疏造成网络特征学习效率低下。

m0_47313541的博客 661

中国各城市土地利用类型(城市功能)数据集(shp)

中国各城市土地利用类型(城市功能)数据集时间:2018年全国范围的城市用地类型数据(居住/商业/交通用地等共计11类)分类:居住用地、商业用地、工业用地、医疗设施用地、体育文化设施用地、交通场站用地、绿地等用地类型含城市编码、一级分类5个、二级分类11个1、上海市。

你好,我是小张同学! 1337

CCF-CSP真题201903-2《二十四点》(栈)

【代码】CCF-CSP真题201903-2《二十四点》(栈)

春雨晚来秋的博客 768

半小时搞定Yolov5安装配置及使用(详细过程)

Yolov51. 下载Yolov52. 安装Yolov5 在下载配置Yolov5前,先要安装好Anaconda环境,可参考之前博文:最新Anaconda3的安装配置及使用教程(详细过程) 1. 下载Yolov5 首先下载Yolov5源码: Yolov5 Github地址:https://github.com/ultralytics/yolov5 直接git clone到本地工作目录,等待下载完成: Yolov5代码目录架构: 2. 安装Yolov5 源码下完后,下面开始安装Yolov5所需模块,

HowieXue 薛永浩的博客 12万+

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

问题链接:CCF201903-2 二十四点 问题分析: 表达式计算问题,关键是对输入流进行处理,需要考虑表达式中运算符的优先级。 程序说明:(略) 提交后得100分的C语言程序如下: 提交后得100分的C++语言程序如下: ...

海岛Blog 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ccf 201903-2 二十四点 (100分)

提交后得100分的C++程序如下: #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; while(n--){ string str; cin>>str; stack<int> tmp;//运算数 stack&lt...

jinduo16的博客 696

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

CCF201903-2 二十四点(100分)(Java)

import java.util.Scanner; import java.util.Stack; public class Point24 { /** * 二十四点 */ public static void main(String[] arugs) { // 获取行数 Scanner scan = new Scanner(System.in); i...

Ysf优快云2016的博客 391

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

CCF-CSP 201903-2 二十四点【水题】【STL】(100分)

试题编号: 201903-2 试题名称: 二十四点 时间限制: 1.0s 内存限制: 512.0MB 题目描述: 代码如下(100分): #include <iostream> #include <stack> #include <string> using namespace std; int main() { std::ios::sync_wit...

inv0ker的博客 1902

CCF 201903-2 二十四点 100分

#include <iostream> #include <string> #include <vector> #include <cstring> using namespace std; /* 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 ...

irises1412的博客 306

CCF 201903-2 二十四点(Python100分)

CCF历届真题 部分题解 ,点击进入 问题描述 试题编号: 201903-2 试题名称: 二十四点 时间限制: 1.0s 内存限制: 512.0MB 问题描述: n=int(input()) for i in range(n): num=input() s=list(num[1:6:2]) for i in range(len(s)): if s[i]=='x': .

101 010 000 370

ccf201903-2二十四点(100分)

//此题坑较多 #include <stdio.h> #include <iostream> using namespace std; #define N 10 char sign[N]; int digital[N]; int main(){ int n; scanf("%d", &n); while(n--){ string s; cin>&...

WOSHILURENJI的博客 215

CCF CSP 201903-2 二十四点(Python语言100分)

经过读题分析,本题直接采用Python语言内置字符串表达式执行函数eval即可快速AC,只需将小写字母xxx替换为∗*∗,///替换为//////,因为Python语言中///运算符表示浮点除法,而//////运算符才表示整数除法,等价于C++语言中的///运算符。 4. 提交AC结果...

AlbertDarren的博客 401

CCF认证 - 201903-2 二十四点(100分)

千言万语一句话:注意细节!!! 采用栈这种数据结构进行计算,关键是确定栈顶运算符与当前输入运算符的优先级关系。 特别需要注意的是: 1、在表达式输入时可以不用开辟字符数组进行存储,可以随着表达式的输入来进行出栈、入栈与计算。 2、需要注意当使用 scanf 输入 n 的值时,因为后面要用 c=getchar() 接收字符,所以在中间要用一个空的 getchar() 吃回车(此外在2个接收字符的 c...

qq_40064490的博客 466

ccf二十四点Java,CCF201903-2 二十四点(100分)(Java)

import java.util.Scanner;import java.util.Stack;public class Point24 {/*** 二十四点*/public static void main(String[] arugs) {// 获取行数Scanner scan = new Scanner(System.in);int count = scan.nextInt();// 防...

weixin_32009809的博客 147

CCF 201903-2 二十四点 (100分)

#include <stdio.h> typedef struct data { int Item; char s[7]; int ans; }a[100]; a data; void judge(a data, int n); int main() { int n = 0; scanf("%d", &n); for(...

wj7068的博客 224

ccf csp认证 201903-2 二十四点 100分 c++

用两个栈,一个存放符号,一个存放数值。 依次读取符号,如果是乘除,数值栈顶端数出栈,与符号后面的数进行运算,结果放入数值栈。如果符号是加和减,如果符号栈不为空,先运算符号栈和数值栈,把结果放入数值栈,再把符号放入符号栈,符号后面的数放入数值栈。 #include<iostream> #include<stack> using namespace std; int main...

weixin_43620061的博客 337

CCF 201903-2二十四点 (100分)

(1)题目描述 (2)算法思想 分别读入数值与运算符方便进行计算; 优先处理乘法与除法的计算,并且遵循从左至右的顺序; 当乘法与除法计算完毕后开始处理加减法得到最终的结果; 最终结果等于24则输出"Yes",否则输出"No",注意输出格式以及大小写。 (3)代码实现 #include<map> #include<vector> #include<iostream> using namespace std; int fun(int n1, int n2, char

Henimal00的博客 237
上一篇: 毕业设计总结
下一篇: CCF201812-2小明放学
宝宝很聪明
博客等级 码龄10年 353粉丝 101原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值