首页 > 这样写为什么不对
头像
牛客755461736号
编辑于 2021-04-18 13:46
+ 关注

这样写为什么不对

链接:https://ac.nowcoder.com/acm/contest/11210/F
来源:牛客网

二维平面上有一个点,假定你的位置在原点,面向 y+方向(右方是x+

6种操作,其中k为参数,表示该操作重复的次数:

  1. r :整个世界的坐标系转 k 次,每次顺时针转 90 度。
  2. l :整个世界的坐标系转 k 次,每次逆时针转 90 度。
  3. w :往前方走 k 个单位
  4. a :往左方走 k 个单位
  5. d :往右方走 k 个单位
  6. s : 往后方走 k 个单位
你面朝的方向始终没有发生改变,变化的是这个世界,请输出你最后的位置。

#include <stdio.h>

int main()
{
// face = 1 时为面对y;
// face = 2 时为面对x;
// face = 3 时为面对-y;
// face = 4 时为面对-x;
int t, n, i, j, x, y, face;
int k[100000];
char ch;
scanf("%d",&t);
for(i = 0; i < t; i++)
{
x = 0;
y = 0;
face = 1;
scanf("%d",&n);
for(j = 0; j < n; j++)
{
getchar();
scanf("%c",&ch);
scanf("%d",&k[j]);
if(ch == 'r' && k[j] % 4 == 1)
face = face + 3;
if(ch == 'r' && k[j] % 4 == 2)
face = face + 2;
if(ch == 'r' && k[j] % 4 == 3)
face = face + 1;
if(ch == 'l' && k[j] % 4 == 1)
face = face + 1;
if(ch == 'l' && k[j] % 4 == 2)
face = face + 2;
if(ch == 'l' && k[j] % 4 == 3)
face = face + 3;
if(face % 4 == 1)
{
if(ch == 'w')
y += k[j];
if(ch == 'a')
x -= k[j];
if(ch == 'd')
x += k[j];
if(ch == 's')
y -= k[j];
}
if(face % 4 == 2)
{
if(ch == 'w')
x += k[j];
if(ch == 'a')
y += k[j];
if(ch == 'd')
y -= k[j];
if(ch == 's')
x -=k[j];
}
if(face % 4 == 3)
{
if(ch == 'w')
y -= k[j];
if(ch == 'a')
x += k[j];
if(ch == 'd')
x -= k[j];
if(ch == 's')
y += k[j];
}
if(face % 4 == 0)
{
if(ch == 'w')
x -= k[j];
if(ch == 'a')
y -= k[j];
if(ch == 'd')
y += k[j];
if(ch == 's')
x += k[j];
}
}
printf("%d %d\n",x,y);
}
return 0;
}

这样写为什么不对

全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐