兰顿蚂蚁
作者:
小笔摘纸
,
2024-04-06 23:31:45
,
所有人可见
,
阅读 8
#include<iostream>
using namespace std;
const int N=110;
int g[N][N];
int m,n;
int main()
{
int x,y,k,index;
char s,ch[4]={'U','R','D','L'};//按照顺时针存好四个方向(右转),左转是逆着来
scanf("%d%d",&m,&n);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&g[i][j]);
}
}
scanf("%d %d %c %d",&x,&y,&s,&k);//此处的输入要注意上文提到的格式规范,不然不给过
while(k--)//k步
{
for(int i=0;i<4;i++)//找到初始的方向
{
if(s==ch[i])
{
index=i;
break;
}
}
if(g[x][y]==0)//白色是调整方向的操作
{
if(index==0)
{
index=3;
}
else
{
index--;
}
}
else//黑色时调整方向的操作
{
if(index==3)
{
index=0;
}
else
{
index++;
}
}
s=ch[index];//得到调整后的方向
g[x][y]--;//改变原格子颜色
if(g[x][y]==-1)
{
g[x][y]=1;
}
if(s=='U')//以下是根据调整后的方向对x,y做出的调整,调整规则在上文注意事项
{
x--;
}
else if(s=='D')
{
x++;
}
else if(s=='R')
{
y++;
}
else
{
y--;
}
}
printf("%d %d\n",x,y);
return 0;
}