ZOJ 1423 (Your)((Term)((Project))) (POJ 1690)
2011-04-07 20:59
169 查看
额,这个题就是一括号匹配,把多余括号去掉!
因为这些括号已经是匹配好的了,所以,当我们遇到一个)时,那么向前查找的第一个( 一定是它的匹配,这样判断是否去掉就OK了!
因为这些括号已经是匹配好的了,所以,当我们遇到一个)时,那么向前查找的第一个( 一定是它的匹配,这样判断是否去掉就OK了!
#include<stdio.h> #include<string.h> #define N 260 char str ,s ; int sign ; int main() { int i,j,m,len,k; scanf("%d",&m); getchar(); while(m--) { gets(s); len=0; for(i=0;s[i];i++) if(s[i]!=' ')str[len++]=s[i]; for(i=0;i<len;i++) { if(str[i]==')') { for(j=i-1;j>=1;j--) { if(str[j]=='('&&str[j-1]!='-'&&sign[j]==0) { sign[i]=sign[j]=1; break; } else if(str[j]=='('&&str[j-1]=='-'&&sign[j]==0) { for(k=j+1;k<i;k++) if(str[k]=='+'||str[k]=='-')break; if(k==i) { sign[i]=sign[j]=1; break; } else { sign[i]=sign[j]=2; break; } } else if(sign[j]==0&&sign[i]==0&&str[j]=='(') { sign[j]=sign[i]=2; break; } } if(j==0) { if(str[0]=='('&&sign[0]==0) sign[0]=sign[i]=1; } } } for(i=0;i<len;i++) if(sign[i]!=1)printf("%c",str[i]); puts(""); for(i=0;i<len;i++) sign[i]=0; } }
相关文章推荐
- ZOJ 1423 (Your)((Term)((Project))) (POJ 1690) (模拟)
- ZOJ 1423 POJ 1690 (Your)((Term)((Project)))
- ZOJ Problem Set - 1423 (Your)((Term)((Project)))
- POJ 1690 (Your)((Term)((Project)))
- poj 1690 (Your)((Term)((Project)))
- POJ 1690 (Your)((Term)((Project)))
- TOJ 2196 ZOJ 1423 (Your)((Term)((Project))) 字符串处理
- POJ 1690 (Your)((Term)((Project))) 笔记
- POJ--1690 (Your)((Term)((Project)))(字符串处理)
- POJ1690 (Your)((Term)((Project)))
- poj 1690 (Your)((Term)((Project)))
- ZOJ 1423 (Your)((Term)((Project))) (模拟+数据结构)
- POJ--1690 (Your)((Term)((Project)))(字符串处理)
- ZOJ-1423-(Your)((Term)((Project))) 【模拟】
- ZOJ 1423_(Your)((Term)((Project)))
- POJ 1690 (Your)((Term)((Project)))
- poj 模拟 - 1690 (Your)((Term)((Project)))
- zoj1423(Your)((Term)((Project))) (栈——基础练习)
- zoj 1423 (Your)((Term)((Project)))
- POJ 1690 - (Your)((Term)((Project)))