分析
向确定初始时蚂蚁的方向d,之后根据黑白块对d进行变化移动,循环k次即可得到答案。
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
const int N = 110;
int g[N][N],n,m;
int getd(char c) //确定初始方向
{
if(c=='U') return 0;
if(c=='R') return 1;
if(c=='D') return 2;
return 3;
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>g[i][j];
}
}
int x0,y0,k,d;
char c;
cin>>x0>>y0>>c>>k;
d=getd(c);
while(k--) //蚂蚁循环k次
{
if(g[x0][y0]==0){
d=((d-1)%4+4)%4; //白块时要保证方向为正数
g[x0][y0]=1;
x0=x0+dx[d],y0=y0+dy[d];
}
else{
d=(d+1)%4; //%4保证方向区间始终在[0,3]
g[x0][y0]=0;
x0=x0+dx[d],y0=y0+dy[d];
}
}
cout<<x0<<" "<<y0;
return 0;
}