大致题意不难理解,注意几点细节。
转向触发条件:
⑴ 一个小时走完后向左转;
⑵ 碰到墙向后转;
⑶ 两只兔子都走完一个小时的路后(即当时间K为整数时),如果相遇,就交换方向,并且不再向左转。(之前一直以为走的过程中相遇也可以交换方向,一直wa)
还有一点,题目所给的图x轴为竖直方向,y轴为水平方向,由于我不习惯这样,于是把他们换过来了。即x轴水平,y轴竖直。输出结果的时候以(y,x)形式输出。
1,1 | 2,1 | 3,1 | 4,1 |
1,2 | |||
1,3 | |||
1,4 | 4,4 |
--→x
↓y
#include#include #include using namespace std;int dx[]= { 0,-1,0,1}; //方向顺序为N,W,S,E。这是为了方便向左转int dy[]= {-1,0,1,0};int n;int time;struct Coo{ int x; int y;} coo[2];struct Rabbit{ int di; int v; int turn;} rabbit[2];void solve(){ coo[0].x=coo[0].y=1; coo[1].x=coo[1].y=n; for(int i=1; i<=time; i++) { bool flag1=true; for(int j=0; j