南沙C++信奥老师解一本通题:1203:扩号匹配问题

【题目描述】

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

【输入】

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

【输出】

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

【输入样例】

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

【输出样例】

((ABCD(x)
$$
)(rttyy())sss)(
?            ?$
#include <bits/stdc++.h>
using namespace std;
int a[200];  //a[i]=1  左括号不匹配 a[i]=-1 右括号不匹配 
void match(string s,int n)
{if(s=="")return;if(s[0]=='(')a[n]=1;			else if(s[0]==')') //清除最近的左括号 {bool flag=false; 		//查找最近的一个左括号位置for(int i=n-1;i>=0;i--){if(a[i]==1){a[i]=0;flag=true;break;//跳出循环,只需要匹配一个左括号就行了 }}if(!flag) //否则没有左括号,自己有不配的右括号 a[n]=-1;}match(s.substr(1),n+1);
}
int main()
{string s;while(cin>>s){memset(a,0,sizeof(a));  cout<<s<<endl;     //注原文要先输原先字符串 match(s,0);	for(int i=0;i<s.size();i++){if(a[i]>0)cout<<"$";else if(a[i]<0)cout<<"?";else cout<<" ";}cout<<endl;}return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/795281.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cisco Catalyst Center 2.3.7.6-VA 发布下载,新增功能概览

Cisco Catalyst Center 2.3.7.6-VA 发布下载,新增功能概览Cisco Catalyst Center 2.3.7.6-VA - 网络管理和自动化 Cisco Catalyst Center - Network Management and Automation 请访问原文链接:https://sysin.org/blog/cisco-catalyst-center/,查看最新版。原创作品,转载请…

macOS Sequoia 15 RC (24A335) Boot ISO 发布下载,正式版下周公布

macOS Sequoia 15 RC (24A335) Boot ISO 发布下载,正式版下周公布macOS Sequoia 15 RC (24A335) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新、备受瞩目的游戏和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin…

网络流与图匹配

大风带来秋意一丝【学习笔记】网络流 (2024.4.23)时代的眼泪,近几年真的有考过吗,感觉不如二分图。Part1. 基本定义流函数 \(f\) 满足 1.斜对称性 2.流量守恒。 定义残量网络为容量函数 \(c=c-f\) 的网络,当 \(c=0\) 视作不存在。 定义增广路 \(P(V,E_f),\) 是残量网络上一条…

C#/.NET/.NET Core优秀项目和框架2024年8月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项…

WPF 已知问题 监听 WMI 事件导致触摸失效

本文记录 WPF 的已知问题,在 .NET Core 版本的 WPF 应用里面,应用启动的过程监听 WMI 事件,将导致触摸模块 COM 接口获取失败,进而导致触摸失效此问题仅在 .NET Core 版本复现,在 .NET Framework 框架下能正常工作 复现步骤如下:安装 System.Management 库用于使用 WqlEv…

读软件设计的要素07读后总结与感想兼导读

读后总结与感想兼导读1. 基本信息 软件设计的要素 丹尼尔杰克逊著 浙江教育出版社,2024年5月出版 1.1. 读薄率 书籍总字数236千字,笔记总字数18853字。 读薄率18853236000≈8% 1.2. 读厚方向构建可扩展分布式系统方法与实践设计模式:可复用面向对象软件的基础程序员修炼之道:…

C语言创建空白Windows窗口代码

C语言创建空白Windows窗口代码自用#include <windows.h> #include <stdio.h> #include <stdlib.h> //#include <imm.h>LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPT…

南沙信奥老师解一本通题:1210:因子分解

​【题目描述】输入一个数,输出其素因子分解表达式。【输入】输入一个整数 n (2≤n<100)。【输出】输出该整数的因子分解表达式。 表达式中各个素数从小到大排列。 如果该整数可以分解出因子a的b次方,当b大于11时,写做 a^b ;当b等于1时,则直接写成a。【输入样例】 60 【…

Linux系统部署Jmeter环境

1.Linu安装Java环境 Jmeter是Java开发的,需要依赖JDK环境,因此我们需提前安装好JDK,安装地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 先下载到windows系统,再将jar包传输到linux系统 2.windows系统安装MobaXterm 想要把windows系统的数据传…

Redis 入门 - 五大基础类型及其指令学习

学习Redis基础类型:字符串、集合、有序集合、列表、哈希,每种类型有各自的特点和常用指令。掌握这些基础是熟练使用Redis的关键。更多指令需自行尝试。经过前面Redis入门系列三篇文章学习,相信大家已经准备好学习新知识了,到这里也算是真正开始学习Redis了。学习了软件安装…

定时任务执行 php think 命令脚本

查看是否有该服务, 是否正常运行 1. 编写crontab 文件。 命令: crontab -e 如下图: php 是全局安装的, 使用php 执行项目目录下的think. 命令是自定义的命令, 然后把输出写到日志文件