POJ1690 简单运算去括号
题目大意:
给定一串只含加减和括号的运算,去掉没用的括号和空白字符输出
这里其实只要去找当前括号前面那个运算符是不是减号,如果是减号且这个括号内出现过运算符说明这个括号应该存在
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 6 using namespace std; 7 #define N 1010 8 #define MOD 1000007 9 #define base 31 10 11 char s[N]; 12 char que[N]; 13 int top; 14 bool flag[N]; 15 16 void solve() 17 { 18 top = 0; 19 for(int i=0 ; i<strlen(s) ; i++){ 20 que[++top] = s[i]; 21 flag[top] = true; 22 if(s[i] == ')'){ 23 int cnt = 0 , ch=0;//ch记录括号过程中有没有出现过多次运算 24 for(int j=top ; j>0 ; j--){ 25 if(que[j]=='(' && flag[j]==true){ 26 cnt--; 27 if(cnt == 0){ 28 int k=j-1; 29 while(k){ 30 if(flag[k]==true&&(que[k]=='('||que[k]=='+'||que[k]=='-')) break; 31 k--; 32 } 33 // cout<<i<<" "<<j<<" "<<k<<endl; 34 if(ch==0 || k==0 ||(k>0&&que[k] != '-')) flag[top] = flag[j] = false; 35 } 36 } 37 else if(que[j]==')' && flag[j]==true) cnt++; 38 else if(que[j]=='+' || que[j]=='-') ch++; 39 } 40 } 41 } 42 } 43 44 int main() 45 { 46 #ifndef ONLINE_JUDGE 47 freopen("a.in" , "r" , stdin); 48 #endif // ONLINE_JUDGE 49 int n; 50 while(~scanf("%d" , &n)) 51 { 52 gets(s); 53 for(int i=0 ; i<n ; i++){ 54 gets(s); 55 solve(); 56 for(int i=1;i<=top;i++){ 57 if(que[i] == ' ') continue; 58 if(flag[i]==true) printf("%c" , que[i]); 59 } 60 puts(""); 61 } 62 } 63 return 0; 64 }
转载于:https://www.cnblogs.com/CSU3901130321/p/4546108.html
POJ1690 简单运算去括号相关推荐
- 一元多项式计算器_人教版初中数学七年级上册——去括号、去分母解一元一次方程公开课优质课课件教案视频...
正数和负数的概念PPT课件教案下载__初中数学人教版七年级上册_师梦圆www.shimengyuan.com正数.负数以及0的意义PPT课件教案下载__初中数学人教版七年级上册_师梦圆www.sh ...
- javascript入门·简单运算和数据类型转换
演示了三种情况下的运算,当然这里只是演示了 + 其实减,乘,除,都差不多,但是切记,只有加号可以用与连接字符串,别试图用减号等去操作字符串!! <%@LANGUAGE="JAVASC ...
- 批量修改文件名去括号,没有括号的方法
批量修改文件名去括号,没有括号的方法!对大量文件进行批量重命名,是很多小伙伴日常工作中要遇到的操作,文件批量重命名不是很难,相信绝大部分小伙伴都知道如何实现,小编就不做介绍了.不过很多小伙伴在批量重命 ...
- c语言删除括号内的字符,去括号 (C语言代码)
解题思路: 1.判断括号是否多余,即判断括号去除后运算顺序是否改变,亦即判断括号内外的运算符优先级,基本思路即括号内运算符优先级较高则可去括号: 2.去括号,用特殊符号标记多余的括号. 这里我用栈结构 ...
- C#的winform矩阵简单运算
C#的winform矩阵简单运算 程序截图 关键代码 using System; using System.Collections.Generic; using System.ComponentMod ...
- 职业发展鉴定方法:第一行:自己行 第二行:大家说你行 第三行:领导行 就这么简单,去努力吧,如果你做到了这三个行,那么你肯定行...
[Thinking]三个行 昨天跟同事聊职业发展,同事给我讲了个道理,虽然类似的道理自己也知道很多并且坚持奉行着,但是同事总结的特别好!我反复思量这简单的几句话,感觉真的真的很精辟! 三个行 第一行: ...
- python列表去括号_python的常用序列
list 1.list(obj)函数 obj可以为:元组(1,2,3),可迭代对象,字符串等转换换成数组类型 2. 列表元素的添加 (1)list+[添加的元素] (2)list.append(添加元 ...
- nyoj244 16进制的简单运算
16进制的简单运算 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果. 输入 第一行输入一个正整数T(0 ...
- MATLAB符号变量的创建和简单运算
声明:本文章中数据来自清风老师数学建模课程 文章目录 MATLAB符号变量的创建和简单运算 1.符号变量 1. 1 符号变量的创建 1.2 符号方程的创建 3 符号矩阵的创建 2.符号运算 2.1 简 ...
最新文章
- Python,OpenCV中的霍夫圆变换——cv2.HoughCircles()
- VIM不正常退出产生的swp文件
- 自定义控件:旋转菜单
- 元宇宙教不会区块链赚钱
- Leecode 496. 下一个更大元素 I——Leecode每日一题系列
- 拆解 | 某平台19元的儿童电话手表,究竟怎么做到的?
- 走出迷宫(信息学奥赛一本通-T1254)
- sklearn之Multiclass 估计器
- leetcode题库1--两数之和
- day08【后台】权限控制-上
- vue报错 Uncaught (in promise) NavigationDuplicated {_name:““NavigationDuplicated“... 的解决方法
- C# 实现自定义的USB设备与上位机进行通信(上位机部分)
- pure-ftpd 配置
- 对极几何基本概念与极线约束
- 基于matlab的Guass-Seidel(高斯--赛德尔) 迭代法求解线性方程组
- rpm、lpm是什么意思?
- 油耳戴什么款式耳机好?骨传导耳机最合适
- 华为宣布出售荣耀,声明来了
- IMAX6ULL正点原子学习笔记(led汇编驱动)
- 盒马鲜生真的是新零售吗?