hdu4740

来源:互联网 发布:数学试卷编辑软件 编辑:程序博客网 时间:2024/06/05 19:37



#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;}


原创粉丝点击