根据地图信息模拟蚂蚁的路径。如果直接模拟会比较麻烦,根据分析,无论蚂蚁现在处于什么颜色的方块,一共就有4种转向方式。用DFS模拟比较好理解一点。具体看代码。注意转向后坐标,代码中有个小技巧。。。
AC代码:
#include <iostream>#include <cstring>using namespace std;int n,m,k;int a[105][105];void DFS(int x,int y,char dir,int t){ if(t==k) { cout<<x<<" "<<y<<endl; return; } //注意转向后坐标 if(a[x][y]==1&&dir=='L'||a[x][y]==0&&dir=='R')//UP { a[x][y]=1-a[x][y];//小技巧 DFS(x-1,y,'U',t+1); } else if(a[x][y]==1&&dir=='R'||a[x][y]==0&&dir=='L')//down { a[x][y]=1-a[x][y]; DFS(x+1,y,'D',t+1); } else if(a[x][y]==1&&dir=='U'||a[x][y]==0&&dir=='D')//R { a[x][y]=1-a[x][y]; DFS(x,y+1,'R',t+1); } else if(a[x][y]==1&&dir=='D'||a[x][y]==0&&dir=='U')//L { a[x][y]=1-a[x][y]; DFS(x,y-1,'L',t+1); }}int main(){ while(cin>>n>>m) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) cin>>a[i][j]; } int x,y; char ch; cin>>x>>y>>ch>>k; DFS(x,y,ch,0); } return 0;}
新闻热点
疑难解答