这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战
1.编译运行
- 需求
请编写程序判断一个包含“(”和“)”的括号序列是否匹配。如匹配则输出Match;如不匹配,计算出使该序列变为匹配序列所需添加的最少括号数目(只允许在该序列开始和结尾处添加括号),并输出经添加最少括号后得到的合法匹配序列。
- 输入格式
输入为一个字符串,包含不超过100000个括号。
- 输出格式
若输入的括号序列匹配,则输出Match。若不匹配,则输出分为2行,第1行为一个整数,表示将该序列变为匹配序列所需添加的最少括号数目,第2行为一个字符串,表示经添加最少括号后得到的合法匹配序列。
2.样例
- 输入样例1:
(())()
- 输出样例1:
Match
- 输入样例2:
)(
- 输出样例2:
2
()()
- 输入样例3:
4
((()))(())
3.代码块
- 顺序栈存储结构定义
1 | cpp复制代码typedef struct{ |
- 顺序栈S初始化
1 | cpp复制代码Status InitStack(SqStack &S){ |
- 进栈,将e压入顺序栈S中
1 | cpp复制代码Status push(SqStack &S,SElemType e){ |
- 出栈,将栈顶元素给e
1 | cpp复制代码Status pop(SqStack &S,SElemType &e){ |
- 取栈顶元素 ,赋值给e
1 | cpp复制代码Status GetTop(SqStack S,SElemType &e){ |
- 判断栈是否为空
1 | cpp复制代码int stackEmpty(SqStack S){ |
- 括号匹配
1 | cpp复制代码 int flag =1; |
- 输出Match或输出需要补的括号
1 | cpp复制代码if( stackEmpty(S) && flag==1 ) { |
4.源码
1 | cpp复制代码#include<iostream> |
本文转载自: 掘金