学习《九度机试指南3》如下。
有一个遗留问题 题目1051:数字阶梯求和 等待解决,mark一下。
题目1153:括号匹配问题
#include <iostream>
#include <stack>
using namespace std;
stack<int> S;
char src[101];
char dst[101];
int main()
{
int i;
while(cin.getline(src,101)){
for(i=0; src[i]!=0; i++){
if(src[i]=='('){
S.push(i);
dst[i]=' ';
}else if(src[i]==')'){
if(S.empty()){
dst[i]='?';
}
else{
dst[i]=' ';
S.pop();
}
}
else
dst[i] = ' ';
}
dst[i]='\0';
while(!S.empty()){
dst[S.top()] = '$';
S.pop();
}
cout<<src<<endl;
cout<<dst<<endl;
}
return 0;
}
注意:栈的使用,还有难点在于怎么找到不匹配的左括号的位置,可以定义一个结构体专门记录,也可以像这里一样向栈中存入字符串数组的下标,最后通过这个下标修改相应位置的字符。