第7单元第8课栈的应用例1:括号匹配(check,1s,256MB)假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正确的格式
本题的任务是检测一个给定表达式中的括号是否正确匹配
输入一个只包含上述括号的字符串,判断字符串中的括号是否匹配,匹配就输出”OK”,不匹配就输出”Wrong”
输入格式:一行字符,只含有圆括号和方括号,个数小于255
输出格式:匹配就输出一行文本“OK”,不匹配就输出一行文本“Wrong”
输入样例:[(])输出样例:Wrong问题分析一个匹配的括号序列,必定是左、右圆括号、方括号的数量一样多
但是反过来,一样多不一定是匹配的
定义一个字符型的栈来维护左括号,按顺序处理括号序列:1)遇到左括号:将它入栈
2)遇到右括号:检查栈顶元素与右括号是否匹配
如果匹配,将栈顶左括号出栈;否则,判断出序列不匹配,结束
如果读到了左括号,而栈为空,也不匹配
如果序列处理完毕,栈非空,也不匹配
例2:表达式求值(NOIP2013普及组复赛,expr,1s,256MB)题目描述给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值
输入格式:输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0到2^31-1之间的整数
输入数据保证这一行只有0~9、+、*这12种字符
输出格式:输出只有一行,包含一个整数,表示这个表达式的值
注意:当答案长度多于4位时,请只输出最后4位,前导0不输出
输入输出样例输入样例1:输入样例2:输入样例3:1+1*3+41+1234567890*11+1000000003*1输出样例1:输出样例2:输出样例3:878914说明对于30%的数据,0≤表达式中加法运算