讨论 / 我试都是对的,为什么不过的呢?谁给我举个反例
1150076053 2011-10-05 23:07:00
点我顶贴 收藏 删除
// 645

#include<string>

#include<iostream>

using namespace std;

inline int init(char a[],int l[],int r[],int n)

{

int str[1001],t=0,j=0;

for(int i=1;i<=n;i++){

if(a[i]== '(' )str[++t]=i;

if(a[i]== ')' ){l[++j]=str[t--];r[j]=i;}

}

return j;

}

main()

{

// freopen("645.in","r",stdin);

//freopen("645.out","w",stdout);

int t,l[500],r[500],n,j;

char a[1001];

cin>>t;

while(t--){

memset(l,0,sizeof(l));

memset(r,0,sizeof(r));

scanf("%s",a+1);

n=strlen(a+1);

a[0]='0';a[n+1]='0';

j=init(a,l,r,n);

for(int i=1;i<=j;i++){

bool c=1;

for(int j=l[i]+1;j<=r[i]-1;j++)if(a[j]=='+')c=0;

if((a[l[i]-1]=='+'||a[l[i]-1]=='('||a[l[i]-1]=='0')

&&(a[r[i]+1]=='+'||a[r[i]+1]==')'||a[r[i]+1]=='0')

||c)

{a[l[i]]='0';a[r[i]]='0';}

}

for(int i=1;i<=n;i++)if(a[i]!='0')printf("%c",a[i]);

printf("\n");

}

return 0;

}

查看更多回复
提交回复