學習《九度機試指南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;
}
注意:棧的使用,還有難點在於怎麼找到不匹配的左括號的位置,可以定義一個結構體專門記錄,也可以像這裏一樣向棧中存入字符串數組的下標,最後通過這個下標修改相應位置的字符。