| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
请教:这样是不是因为输入死循环引起TLE??#include <stdio.h>
#include <string.h>
char s[200];
bool get(int i,int j)
{
int x , y , l;
bool g , f , rev = false;
char op;
x = i;
if( s[x] == '!' ){rev = true ;x++;}
if( s[x] == 'V' ){g = true;y=x;}
else if( s[x] == 'F' ){g = false;y=x;}
else if( s[x] == '(')
{
for( l = 1 ,y = x +1 ; y <= j ; y++ )
{
if( s[y] == '(')l++;
else if( s[y] == ')' ){l--;if(l==0)break;}
}
g = get(x+1,y-1);
}
if( rev == true ) {g = !g;rev = false;}
for( x = y +1 ; x <= j ; )
{
op = s[x++];
if( s[x] == '!' ){rev = true ;x++;}
if( s[x] == 'V' ){f = true;y=x;}
else if( s[x] == 'F' ){f = false;y=x;}
else if( s[x] == '(')
{
for( l = 1 ,y = x +1 ; y <= j ; y++ )
if( s[y] == '(')l++;
else if( s[y] == ')' ){l--;if(l==0)break;}
f = get(x+1,y-1);
}
if( rev == true ) {f = !f;rev = false;}
if( op == '&' ) g = g & f;
else g = g | f;
x = y +1 ;
}
return g;
}
int main()
{
int i , t = 1 ;
char c;
//FILE* f = fopen("in.txt","r");
for( c = getchar() ; ; c = getchar())
{
if( c == EOF )return 0;
i = 0;
while( c != '\n' )
{
switch(c)
{
case ' ':break;
default :s[i++] = c;
}
c = getchar();
}
s[i] = 0;
if( strlen(s) != 0 ){printf("Expression %d: %c\n",t++,(get(0,strlen(s)-1)?'V':'F'));}
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator