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

Re:帮忙写一个?

Posted by hong_liming at 2004-04-20 18:47:11 on Problem 1475
In Reply To:帮忙写一个? Posted by:hawk at 2004-04-19 18:48:33
我不太懂具体那些错误是怎么判断的,瞎写了一个。不过我自己的程序可是ac了:)
我是用cin输入待judge的东西,cout输出judge的结果,原来的测试数据都用文件读进来。
#include<fstream.h>
#include<iostream.h>
#include<string.h>
int picture[22][22];
int r,c;
int peri,perj;//person
int boxi,boxj;//box
int desi,desj;//destination

//int wall=0;
int space=-1;

int position[4][2]={{0,1},{-1,0},{0,-1},{1,0}};
char pos[2][5]={"ENWS","enws"};

void main() 
{
	int i,j,k,p,q,b1,b2,s1,s2;
	char st1[2000],st2[2000],ch;
	ifstream inp("pushing.in");
	ifstream oup("pushing.sol");
	do
	{
		inp>>r>>c;//读地图
		if(r==0&&c==0)break;
		memset(picture,0,22*22*sizeof(int));
		for(i=1;i<=r;i++)
			for(j=1;j<=c;j++)
			{
				inp>>ch;
				if(ch=='S'){peri=i;perj=j;picture[i][j]=space;}
				else if(ch=='B'){boxi=i;boxj=j;picture[i][j]=space;}
				else if(ch=='.')picture[i][j]=space;
				else if(ch=='T'){desi=i;desj=j;picture[i][j]=space;}
			}
		cin.getline(st1,2000,'\n');if(!cin){cout<<"wa"<<endl;goto final;}
		oup.getline(st2,2000,'\n');
		if(strcmp(st1,st2)){cout<<"wa"<<endl;goto final;}
		cin.getline(st1,2000,'\n');if(!cin){cout<<"wa"<<endl;goto final;}
		oup.getline(st2,2000,'\n');
		if(!strcmp(st2,"Impossible."))
			if(strcmp(st1,st2)){cout<<"wa"<<endl;goto final;}else;
		else 
		{
			s1=b1=0;k=-1;
			while(st1[++k]){if(st1[k]>='a'&&st1[k]<='z')s1++;if(st1[k]>='A'&&st1[k]<='Z')b1++;}
			s2=b2=0;k=-1;
			while(st2[++k]){if(st2[k]>='a'&&st2[k]<='z')s2++;if(st2[k]>='A'&&st2[k]<='Z')b2++;}
			if(s1!=s2||b1!=b2){cout<<"wa"<<endl;goto final;}
			k=-1;
			while(st1[++k])
			{
				if(st1[k]>='a'&&st1[k]<='z')
				{
					for(i=0;i<4;i++)
						if(st1[k]==pos[1][i])
						{
							p=peri+position[i][0];q=perj+position[i][1];
							if(picture[p][q]!=space){cout<<"wa"<<endl;goto final;}
							peri=p;perj=q;
							break;
						}
					if(i==4){cout<<"wa"<<endl;goto final;}
				}else if(st1[k]>='A'&&st1[k]<='Z')
				{
					for(i=0;i<4;i++)
						if(st1[k]==pos[0][i])
						{
							p=peri+position[i][0];q=perj+position[i][1];
							if(p!=boxi||q!=boxj){cout<<"wa"<<endl;goto final;}
							peri=p;perj=q;
							p+=position[i][0];q+=position[i][1];
							if(picture[p][q]!=space){cout<<"wa"<<endl;goto final;}
							boxi=p;boxj=q;
							break;
						}
					if(i==4){cout<<"wa"<<endl;goto final;}
				}else{cout<<"wa"<<endl;goto final;}
			}
			if(boxi!=desi||boxj!=desj){cout<<"wa"<<endl;goto final;}
		}
		cin.getline(st1,2000,'\n');if(!cin){cout<<"wa"<<endl;goto final;}
		oup.getline(st2,2000,'\n');
		if(strcmp(st1,st2)){cout<<"wa"<<endl;goto final;}
	}while(true);
	cin>>ch;
	if(cin){cout<<"wa"<<endl;goto final;}
	cout<<"ac"<<endl;
final:
	inp.close();
	oup.close();
}

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