Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

大牛们帮我看看啊,或者给歌数据也行啊,实在不知道什么bt数据不过啊

Posted by amouse at 2008-03-08 12:48:08 on Problem 2106
#include<iostream.h>
#define N 10000000
char input[N],stack[400];
int flag;
int P(char ch)
{
	if(ch=='('||ch=='@')return 0;
	else if(ch=='|')return 1;
	else if(ch=='&')return 2;
	else return 3;
}
bool value(char ch)
{
	if(ch=='V')return true;
	else return false;
}
char cvalue(bool x)
{
	if(x==true)return 'V';
	else return 'F';
}
void change()//中缀表达式转后缀
{
	int i=0;
	flag=0;
	char s[100];int f=0;
	s[f++]='@';
	char ch=input[0];
	while(ch!='\0')
	{
		if(ch==' ')ch=input[++i];
		else if(input[i]=='(')
		{
			s[f++]='(';
			ch=input[++i];
		}
		else if(ch==')')
		{
			while(s[--f]!='(')
				stack[flag++]=s[f];
			if(s[f-1]=='!')stack[flag++]=s[--f];
			ch=input[++i];
		}
		else if(ch=='!')
		{
			if(s[f-1]=='!')f--;
			else s[f++]='!';
			ch=input[++i];
		}
		else if(ch=='&'||ch=='|')
		{
			char w=s[f-1];
			while(P(w)>=P(ch))
			{
				stack[flag++]=w;
				f--;
				w=s[f-1];
			}
			s[f++]=ch;
			ch=input[++i];
		}
		else 
		{
			stack[flag++]=ch;
			if(s[f-1]=='!')stack[flag++]=s[--f];
			ch=input[++i];
		}
	}
	while(s[f-1]!='@')
	{
		stack[flag++]=s[--f];
	}
}
bool cal()//计算后缀表达式的值
{
	char s[100];
	int f=1;s[f-1]='@';
	int i=0;
	char ch=stack[i];
	bool x;
	while(i<flag)
	{
		switch(ch)
		{
			case '!':x=!value(s[--f]);break;
			case '|':x=value(s[--f])|value(s[--f]);break;
			case '&':x=value(s[--f])&value(s[--f]);break;
			default :x=value(ch);
		}
		if(s[f-1]=='!')s[f-1]=cvalue(!x);//特殊处理"!";
		else s[f++]=cvalue(x);
		ch=stack[++i];
	}
	return value(s[1]);
}
int main()
{
	int ca=0;
	while(cin.getline(input,N))
	{
//		cout<<input<<endl;
		if(input[0]=='\0')continue;
		ca++;
		change();
		cout<<"Expression "<<ca<<": "<<cvalue(cal())<<endl;
	}
	return 0;
} 

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator