AcWing 3152. 兰顿蚂蚁
原题链接
简单
C++ 代码
#include<iostream>
using namespace std;
int a[105][105];
int m,n,x,y,k;
char s,d[4]={'U','R','D','L'};//上右下左
int direction;
void turn(int &direction,int &x,int &y){
//改变方向
if(a[x][y]==0){
//白格,左转
direction=(direction-1+4)%4;
}
else {
//黑个右转
direction=(direction+1)%4;
}
//改变格子颜色
a[x][y]=a[x][y]^1;
switch(direction){
case 0:{
x--;
break;
}
case 1:{
y++;
break;
}
case 2:{
x++;
break;
}
case 3:{
y--;
break;
}
}
//cout<<x<<" "<<y<<endl;
}
int main(){
cin>>m>>n;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
cin>>x>>y;
cin>>s>>k;
for(int i=0;i<4;i++){
if(s==d[i])direction=i;
}
//指示方向
while(k--){
turn(direction,x,y);
}
cout<<x<<" "<<y<<endl;
return 0;
}