码迷,mamicode.com
首页 > 其他好文 > 详细

遭遇战

时间:2018-10-20 15:00:15      阅读:449      评论:0      收藏:0      [点我收藏+]

标签:标记   接下来   memset   clu   循环   测试   mes   开始   位置   

遭遇战
【问题描述】
小林和小华在一个n*n 的矩形方格里玩游戏,矩形左上角为(0,0),右下角为(n-1,n-
1)。两人同时进入地图的随机位置,并以相同速度进行走位。为了隐蔽性,两人都不会再走
自己走过的格子。如果两人向某一方向前进,那么他们会跑到不能跑为止,当不能跑的时候,
小林会向右转,小华则会向左转,如果不能跑,则不再动。 现在已知两人进入地图的初始
位置和方向,请算出两人遭遇的位置。
【输入】
第一行一个正整数t,表示测试数据的组数。
接下来的t 组数据,每组数据的第一行包含1 个整数n,。
第二行包含三个整数,x、y 和d,表示小林的初始位置和一开始跑的方向。其中d=0 表
示东;d=1 表示南;d=2 表示西;d=3 表示北。
第三行与第二行格式相同,但描述的是小华。
【输出】
输出t 行,若会遭遇,则包含两个整数,表示他们第一次相遇的格子的坐标,否则输出
“-1”。

【输入输出样例】
fight.in
2
2
0 0 0
0 1 2
4
0 1 0
3 2 0

fight.out
-1
1 3

考试第一题(惊了)刚了两个多小时。。。纯模拟。。。呵呵:

  1 #include<bits/stdc++.h>
  2 using namespace std;
  3 int k,n;
  4 int x_1,y_1,z_1,x_2,y_2,z_2;
  5 int biao_ji1=1,biao_ji2=1;
  6 int b1[1100][1100],b2[1100][1100];
  7 int main()
  8 {
  9     cin>>k;
 10     while(k)
 11     {
 12         cin>>n;
 13         cin>>x_1>>y_1>>z_1;//读入
 14         cin>>x_2>>y_2>>z_2;
 15         biao_ji1=biao_ji2=1;//默认能走
 16         memset(b1,0,sizeof(b1));
 17         memset(b2,0,sizeof(b2));
 18         while((x_1!=x_2||y_1!=y_2)&&(biao_ji1||biao_ji2))//循环先前走
 19         {
 20             b1[x_1][y_1]=1;//标记
 21             b2[x_2][y_2]=1;
 22             if(biao_ji1)//如果小林能走
 23             {
 24                 if(z_1==3)//根据题意去试
 25                 {
 26                     if(x_1-1>=0&&b1[x_1-1][y_1]==0) x_1--;
 27                     else
 28                     {
 29                         z_1=0;
 30                         if(y_1+1<n&&b1[x_1][y_1+1]==0) y_1++;
 31                         else biao_ji1=0;//表示无法再走
 32                     }
 33                 }
 34                 else if(z_1==0)
 35                 {
 36                     if(y_1+1<n&&b1[x_1][y_1+1]==0) y_1++;
 37                     else
 38                     {
 39                         z_1=1;
 40                         if(x_1+1<n&&b1[x_1+1][y_1]==0) x_1++;
 41                         else biao_ji1=0;
 42                     }
 43                 }
 44                 else if(z_1==1)
 45                 {
 46                     if(x_1+1<n&&b1[x_1+1][y_1]==0) x_1++;
 47                     else
 48                     {
 49                         z_1=2;
 50                         if(y_1-1>=0&&b1[x_1][y_1-1]==0)    y_1--;
 51                         else biao_ji1=0;
 52                     }
 53                 }
 54                 else
 55                 {
 56                     if(y_1-1>=0&&b1[x_1][y_1-1]==0)    y_1--;
 57                     else
 58                     {
 59                         z_1=3;
 60                         if(x_1-1>=0&&b1[x_1-1][y_1]==0)    x_1--;
 61                         else biao_ji1=0;
 62                     }
 63                 }
 64             }
 65             if(biao_ji2)//同上
 66             {
 67                 if(z_2==3)
 68                 {
 69                     if(x_2-1>=0&&b2[x_2-1][y_2]==0)    x_2--;
 70                     else
 71                     {
 72                         z_2=2;
 73                         if(y_2-1>=0&&b2[x_2][y_2-1]==0)    y_2--;
 74                         else biao_ji2=0;
 75                     }
 76                 }
 77                 else if(z_2==0)
 78                 {
 79                     if(y_2+1<n&&b2[x_2][y_2+1]==0) y_2++;
 80                     else
 81                     {
 82                         z_2=3;
 83                         if(x_2-1>=0&&b2[x_2-1][y_2]==0)    x_2--;
 84                         else biao_ji2=0;
 85                     }
 86                 }
 87                 else if(z_2==1)
 88                 {
 89                     if(x_2+1<n&&b2[x_2+1][y_2]==0)    x_2++;
 90                     else
 91                     {
 92                         z_2=0;
 93                         if(y_2+1<n&&b2[x_2][y_2+1]==0) y_2++;
 94                         else biao_ji2=0;
 95                     }
 96                 }
 97                 else
 98                 {
 99                     if(y_2-1>=0&&b2[x_2][y_2-1]==0)    y_2--;
100                     else
101                     {
102                         z_2=1;
103                         if(x_2+1<n&&b2[x_2+1][y_2]==0) x_2++;
104                         else biao_ji2=0;
105                     }
106                 }
107             }
108         }
109         if(x_1==x_2&&y_1==y_2)    cout<<x_1<<" "<<y_1;
110         else cout<<-1;
111         cout<<endl;
112         k--;
113     }
114 }

呵呵呵呵呵呵呵呵呵呵呵呵呵......................

遭遇战

标签:标记   接下来   memset   clu   循环   测试   mes   开始   位置   

原文地址:https://www.cnblogs.com/dai-jia-ye/p/9821520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!