题目大意:

给定一串只含加减和括号的运算,去掉没用的括号和空白字符输出

这里其实只要去找当前括号前面那个运算符是不是减号,如果是减号且这个括号内出现过运算符说明这个括号应该存在

 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 简单运算去括号相关推荐

  1. 一元多项式计算器_人教版初中数学七年级上册——去括号、去分母解一元一次方程公开课优质课课件教案视频...

    正数和负数的概念PPT课件教案下载__初中数学人教版七年级上册_师梦圆​www.shimengyuan.com正数.负数以及0的意义PPT课件教案下载__初中数学人教版七年级上册_师梦圆​www.sh ...

  2. javascript入门·简单运算和数据类型转换

    演示了三种情况下的运算,当然这里只是演示了 +  其实减,乘,除,都差不多,但是切记,只有加号可以用与连接字符串,别试图用减号等去操作字符串!! <%@LANGUAGE="JAVASC ...

  3. 批量修改文件名去括号,没有括号的方法

    批量修改文件名去括号,没有括号的方法!对大量文件进行批量重命名,是很多小伙伴日常工作中要遇到的操作,文件批量重命名不是很难,相信绝大部分小伙伴都知道如何实现,小编就不做介绍了.不过很多小伙伴在批量重命 ...

  4. c语言删除括号内的字符,去括号 (C语言代码)

    解题思路: 1.判断括号是否多余,即判断括号去除后运算顺序是否改变,亦即判断括号内外的运算符优先级,基本思路即括号内运算符优先级较高则可去括号: 2.去括号,用特殊符号标记多余的括号. 这里我用栈结构 ...

  5. C#的winform矩阵简单运算

    C#的winform矩阵简单运算 程序截图 关键代码 using System; using System.Collections.Generic; using System.ComponentMod ...

  6. 职业发展鉴定方法:第一行:自己行 第二行:大家说你行 第三行:领导行 就这么简单,去努力吧,如果你做到了这三个行,那么你肯定行...

    [Thinking]三个行 昨天跟同事聊职业发展,同事给我讲了个道理,虽然类似的道理自己也知道很多并且坚持奉行着,但是同事总结的特别好!我反复思量这简单的几句话,感觉真的真的很精辟! 三个行 第一行: ...

  7. python列表去括号_python的常用序列

    list 1.list(obj)函数 obj可以为:元组(1,2,3),可迭代对象,字符串等转换换成数组类型 2. 列表元素的添加 (1)list+[添加的元素] (2)list.append(添加元 ...

  8. nyoj244 16进制的简单运算

    16进制的简单运算 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果. 输入 第一行输入一个正整数T(0 ...

  9. MATLAB符号变量的创建和简单运算

    声明:本文章中数据来自清风老师数学建模课程 文章目录 MATLAB符号变量的创建和简单运算 1.符号变量 1. 1 符号变量的创建 1.2 符号方程的创建 3 符号矩阵的创建 2.符号运算 2.1 简 ...

最新文章

  1. Python,OpenCV中的霍夫圆变换——cv2.HoughCircles()
  2. VIM不正常退出产生的swp文件
  3. 自定义控件:旋转菜单
  4. 元宇宙教不会区块链赚钱
  5. Leecode 496. 下一个更大元素 I——Leecode每日一题系列
  6. 拆解 | 某平台19元的儿童电话手表,究竟怎么做到的?
  7. 走出迷宫(信息学奥赛一本通-T1254)
  8. sklearn之Multiclass 估计器
  9. leetcode题库1--两数之和
  10. day08【后台】权限控制-上
  11. vue报错 Uncaught (in promise) NavigationDuplicated {_name:““NavigationDuplicated“... 的解决方法
  12. C# 实现自定义的USB设备与上位机进行通信(上位机部分)
  13. pure-ftpd 配置
  14. 对极几何基本概念与极线约束
  15. 基于matlab的Guass-Seidel(高斯--赛德尔) 迭代法求解线性方程组
  16. rpm、lpm是什么意思?
  17. 油耳戴什么款式耳机好?骨传导耳机最合适
  18. 华为宣布出售荣耀,声明来了
  19. IMAX6ULL正点原子学习笔记(led汇编驱动)
  20. 盒马鲜生真的是新零售吗?

热门文章

  1. Tech·Ed 2006博客园聚会
  2. MATLAB 画图时插入图例
  3. Matlab和Modelsim联合仿真的配置
  4. 编程珠玑第七章 粗略估算
  5. Hello,Word宏!
  6. Linux CentOS 7上安装极点五笔
  7. 从库备份中恢复一张表
  8. C#数组排序(按列)
  9. 零基础Java学习之成员变量
  10. leetcode-找出数组中重复的数字