现在的位置: 首页 > 综合 > 正文

hdu4740

2014年08月29日 ⁄ 综合 ⁄ 共 1098字 ⁄ 字号 评论关闭

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int vis1[1010][1010],vis2[1010][1010];
int n,R1,C1,D1,C2,R2,D2,x,y;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int work()
{
	int i,ok1=1,ok2=1;
	int r1,r2,c1,c2,d1,d2;
	d1=D1;
	d2=D2;
	r1=R1+dx[d1];
	c1=C1+dy[d1];
	r2=R2+dx[d2];
	c2=C2+dy[d2];
	while(ok1||ok2)//ok1 ok2为1时表示老虎和驴还在走
	{
		if(R1==R2&&C1==C2)
		{
			x=R1;
			y=C1;
			return 1;
		}
		if(0<=r1&&0<=c1&&r1<n&&c1<n&&!vis1[r1][c1]&&ok1)
			R1=r1,C1=c1,vis1[r1][c1]=1;
		else if(ok1){
			d1++;
			if(d1>3)
				d1-=4;
			r1=R1+dx[d1];
			c1=C1+dy[d1];
			if(0<=r1&&0<=c1&&r1<n&&c1<n&&!vis1[r1][c1])
				R1=r1,C1=c1,vis1[r1][c1]=1;
			else ok1=0; 
		}
		if(0<=r2&&0<=c2&&r2<n&&c2<n&&!vis2[r2][c2]&&ok2)
			R2=r2,C2=c2,vis2[r2][c2]=1;
		else if(ok2){
			d2--;
			if(d2<0)
				d2+=4;
			r2=R2+dx[d2];
			c2=C2+dy[d2];
			if(0<=r2&&0<=c2&&r2<n&&c2<n&&!vis2[r2][c2])
				R2=r2,C2=c2,vis2[r2][c2]=1;
			else ok2=0;
		}
		r1=R1+dx[d1];
		c1=C1+dy[d1];
		r2=R2+dx[d2];
		c2=C2+dy[d2];
	}
	return 0;
}
main()
{
	int i;
	//freopen("D:\\o.txt","r",stdin);
	while(scanf("%d",&n)&&n)
	{
		memset(vis1,0,sizeof(vis1));
		memset(vis2,0,sizeof(vis2));
		scanf("%d%d%d",&R1,&C1,&D1);
		scanf("%d%d%d",&R2,&C2,&D2);
		vis1[R1][C1]=1;
		vis2[R2][C2]=1;
		if(work())
			printf("%d %d\n",x,y);
		else 
			printf("-1\n");
	}
	return 0;
}

抱歉!评论已关闭.