1203:扩号匹配问题#include<bits/stdc++.h>using namespace std;const int maxn=105;int Left[maxn],Right[maxn];char str[maxn],ans[maxn];int stk[maxn];int main(){ while(cin>>str){ int p=0,q=0; int head=-1;//栈空 memset(Left,0,sizeof(Left));.
摘要由CSDN通过智能技术生成
1203:扩号匹配问题
#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
int Left[maxn],Right[maxn];
char str[maxn],ans[maxn];
int stk[maxn];
int main(){
while(cin>>str){
int p=0,q=0;
int head=-1;//栈空
memset(Left,0,sizeof(Left));
memset(Right,0,sizeof(Right));
memset(ans,0,sizeof(ans));
cout<<str<<endl;
int len=strlen(str);
for(int i=0;i<len;i++){
if(str[i]=='('){
head++;
stk[head]=i;
}else if(str[i]==')'){
if(head==-1)Right[q++]=i; //没有匹配的左括号
else head--;//匹配一个左扩号
}
}
//处理结果
for(int i=0;i<=head;i++) ans[stk[i]]='$';//未匹配的左扩号
for(int i=0;i<q;i++) ans[Right[i]]='?';
//输出结果
for(int i=0;i<len;i++){
if(ans[i]==0) cout<<' ';
else cout<<ans[i];
}
1203:扩号匹配问题#include<bits/stdc++.h>using namespace std;const int maxn=105;int Left[maxn],Right[maxn];char str[maxn],ans[maxn];int stk[maxn];int main(){ while(cin>>str){ int p=0,q=0; int head=-1;//栈空 memset(Left,0,sizeof(Left));.