来源:牛客网
二维平面上有一个点,假定你的位置在原点,面向 y+方向(右方是x+。
有 6种操作,其中k为参数,表示该操作重复的次数:
- r :整个世界的坐标系转 k 次,每次顺时针转 90 度。
- l :整个世界的坐标系转 k 次,每次逆时针转 90 度。
- w :往前方走 k 个单位
- a :往左方走 k 个单位
- d :往右方走 k 个单位
- 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;
}
这样写为什么不对
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) 回帖