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

同学们帮忙吧,WA,原因不明!!!(程序如下)

Posted by cpp0600548103 at 2006-04-23 15:44:00 on Problem 1145
//关键1:建立数组tree储存数链 。本题输入实际上是二叉树的顺序访问。tree[i]表示i+1层的数。
//       凡遇'(' 指针p加一,凡遇')'指针p减一,凡遇数则储存到*p中。
//       用sum计数,表示访问至当前位置数链之和。
//关键2:判断什么位置是leaf。观察发现,当且仅当出现 ")()"的时候为leaf。
//关键3:注意处理空树情况


#include <iostream>
#include <string.h>
using namespace std;

const int MAX=10000;
int tree[MAX];
char Ahead3[4];

//设置当前位置前面三个字符 
inline void setAhead3(char chNow)
{
	Ahead3[0]=Ahead3[1];
	Ahead3[1]=Ahead3[2];
	Ahead3[2]=chNow;
}
	
void main()
{
	int num,
		*p;
	char chNow;

	while(cin.eof()!=1) 
	{
		//初始化
		cin>>num;
		p=tree;
		Ahead3[0]=Ahead3[1]='*';
		Ahead3[2]='(';
		Ahead3[3]='\0';
		int sum=0;
		

		cin>>chNow;

		//处理空树情况
		cin>>chNow;
		if(chNow==')') {
			cout<<"no"<<endl;
			
			continue;
		}
		

		while(1)
		{	
			setAhead3(chNow);
			if(chNow=='(')
				p++;

			else if(chNow=='-')
			{
				
				cin>>*p;
				*p=0-*p;
				sum+=*p;
			}

			else if(chNow>='0' && chNow<='9')
			{
				while(chNow>='0' && chNow<='9')
				{
					*p=(*p)*10+(chNow-'0');
					cin>>chNow;
				}
				sum+=*p;
				continue;

			}
			else if(chNow==')')
			{
				sum-=*p;
				*p=0;
				p--;

				if( strcmp( Ahead3,")()" )==0  && sum==num)
				{
				//is leaf && sum==num
				
					while(p>=tree) 
					{
						cin>>chNow;
						if(chNow==')') 
						{
							*p=0;
							p--;
						}
						if(chNow=='(')
							p++;

					}
					cout<<"yes"<<endl;

					break;
				}
		
		        //p回到tree-1仍未break,说明答案为no
				if(p==tree-1) {
					cout<<"no"<<endl;
					break;
				}//end if
			}//end of if(chNow==')')
			cin>>chNow;
		}//end of while(1)
	}//end of while(cin.eof()!=1)
}//end of main


						

					



			







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