编程题#4:扩号匹配问题

来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注.

输入

输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过100

注意:cin.getline(str,100)最多只能输入99个字符!

输出

对每组输出数据,输出两行,第一行包含原始输入字符,第二行由"$","?"和空格组成,"$"和"?"表示与之对应的左括号和右括号不能匹配。

样例输入

((ABCD(x) )(rttyy())sss)(

样例输出

((ABCD(x)

$$

)(rttyy())sss)(

?                ?$


  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<stack>
  4. #include<string.h>
  5. using namespace std;
  6.  
  7. int main() {
  8. int i;
  9. char str[], Mark[];
  10. while(scanf("%s", str) != EOF) {
  11. stack<char> S;
  12. for (i = ; i < strlen(str);i++) {
  13. if (str[i] == '(') {
  14. S.push(i);
  15. Mark[i] = ' ';
  16. }
  17. else if (str[i] == ')') {
  18. if (S.empty()) {
  19. Mark[i] = '?';
  20. }
  21. else {
  22. Mark[i] = ' ';
  23. S.pop();
  24. }
  25. }
  26. else {
  27. Mark[i] = ' ';
  28. }
  29. }
  30. while (!S.empty()) {
  31. Mark[S.top()] = '$';
  32. S.pop();
  33. }
  34. Mark[i] = '\0';
  35. puts(str);
  36. puts(Mark);
  37. }
  38. return ;
  39. }

POJ C程序设计进阶 编程题#4:括号匹配问题的更多相关文章

  1. POJ C程序设计进阶 编程题#4:寻找平面上的极大点

    编程题#4:寻找平面上的极大点 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描 ...

  2. POJ C程序设计进阶 编程题#3:运算符判定

    编程题#3:运算符判定 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 两个 ...

  3. POJ C程序设计进阶 编程题#2:字符串中次数第2多的字母

    编程题#2:字符串中次数第2多的字母 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536k ...

  4. POJ C程序设计进阶 编程题#1:含k个3的数

    编程题#1:含k个3的数 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输 ...

  5. POJ C程序设计进阶 编程题#3:寻找山顶

    编程题#3:寻找山顶 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个 ...

  6. POJ C程序设计进阶 编程题#2: 配对碱基链

    编程题#2: 配对碱基链 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 脱 ...

  7. POJ C程序设计进阶 编程题#1:分配病房

    编程题#1:分配病房 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 某个科 ...

  8. POJ C程序设计进阶 编程题#1:计算矩阵边缘之和

    编程题#1:计算矩阵边缘元素之和 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB ...

  9. POJ C程序设计进阶 编程题#3 : 排队游戏

    编程题#3:排队游戏 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在幼儿 ...

随机推荐

  1. java 抽象类和接口总结

    1.抽象类和抽象方法必须使用abstract 关键字来修饰 2.抽象类不能实例化 3.抽象方法是为实现的方法,它与空方法时两个完全不同的概念 4.abstract 不能喝private static ...

  2. LayoutInflater的实例化

    获得 LayoutInflater 实例的三种方式 1. LayoutInflater inflater = getLayoutInflater();  //调用Activity的getLayoutI ...

  3. Oracle数据库——函数 http://www.jb51.net/article/40469.htm

    1====分析函数  相当于把分组后的结果加到每一行里 SELECT  t.loan_contract_no,t.loan_name,t.loan_amount,ROWNUM,  row_number ...

  4. Android双击Back退出应用

    前言 在app主界面点击back时,通常有以下几种方式进行退出 单击即退出 弹出确认Dialog 再次点击退出程序 个人最喜欢方式3,相比于方式2,不需要再把手指移动到屏幕中央点击Dialog,相比于 ...

  5. 剑指Offer:面试题7——用两个栈实现队列(java实现)

    题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 首先定义两个栈 Stack<Integer> stack1 = new Stack<I ...

  6. js对象2--工厂模式的由来--杂志

    一:工厂模式引入前提例子 先看一个案例 <script type="text/javascript"> var person= new Object(); //创建一个 ...

  7. 下拉列表autocomplete各种实现方式比较

    方法一:用form 表单的datalist属性,此时会以首字母补充排序.实现效果参考:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_ ...

  8. OSChina中远程GIT仓库同步探索

    GIT平台在OSChina中的搭建帮了我们很大的忙,但如何将本地GIT仓库上传至OSChina的远程仓库,相信这是一个艰难的坎,今天我就在此总结我的成功经验,帮助大家,共同学习.由于条件有限,我全部的 ...

  9. OpenGL: 渲染管线理论

    http://blog.csdn.net/augusdi/article/details/19934463 学习着色器,并理解着色器的工作机制,就要对OpenGL的固定功能管线有深入的了解. 首先要知 ...

  10. Unity AssetBundles and Resources指引 (四) AssetBundle使用模式

    本文内容主要翻译自下面这篇文章 https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and- ...