您的位置:首页 > 其它

1690 (Your)((Term)((Project))) 解题报告

2009-02-11 18:12 337 查看
发现自己近来都被水题卡住,而且还很喜欢为它们写报告。。。没办法,谁叫自己菜呢。。。

Memory: 284KTime: 0MS
Language: G++Faults:8 was
#include<stdio.h>
#include<memory.h>
#include<string.h>
char s[2600];
bool get[2600];
int time,p;
char c;
int findback(int x)
{
int top(1);
for(int j = x+1; j < p; j++)
if(s[j]=='(')
top++;
else
if(s[j]==')')	{
top--;
if(!top)
return j;
}
return 0;
}
char front(int x)
{
for(int i = x-1; i >= 0; i--)
if(get[i])
return s[i];
}
int main()
{
char data[10000];
scanf("%d",&time);
gets(data);
while(time--)	{
memset(get,true,sizeof(get));
p = 1;
s[0]='+';
gets(data);
//读入部分
for(int i = 0; i < strlen(data);i++)
if(data[i]!=' ')
s[p++] = data[i];
s[p]='/0';
for(int i = 1; i < p; i++){
if(s[i]=='('){
int tmp = findback(i);
//写front函数为了应付这种情况:
//A-(((B-C)-D))  如果用s[i-1]=='-'不行
if(front(i)!='-'){
get[i]=false;
get[tmp]=false;
}
else {
if(((s[i+1]=='(')&&(findback(i+1)== (tmp-1)))
|| ((i+1)==(tmp-1)))
get[i]=get[tmp]=false;
}
}
if(get[i])
printf("%c",s[i]);
}
printf("/n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: