今天日常刷题的过程中遇到了这样一个问题:
这个题主要难点在于如何模拟右转和左转,以及如何把字符URDL对应到点的坐标上。
解题思路即代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[110][110];
int x,y,k;
char ss;//表示蚂蚁头的朝向
int dx[]={-1,0,1,0};
int dy[]={0,1,0,-1};//偏移量数组
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
}
}
cin>>x>>y>>ss>>k;
char Map[]={'U','R','D','L'};
int s=0;
while(Map[s]!=ss){//找到当前的朝向对应的数字
s++;
}
for(int i=0;i<k;i++){//走k步
s=( s + (a[x][y]==1?1:-1) + 4 ) % 4;//s表示的是方向 0,1,2,3 若黑格,向右转;若白格,向左转 方向遵循上右下左四种情况 加上4这个偏移量是为了防止0-1这种出现负数的情况
a[x][y]=!a[x][y];//黑格遍白格,白格变黑格
x+=dx[s],y+=dy[s];//dx[s]和dy[s]合起来表示当前方向的偏移量
}
cout<<x<<" "<<y<<endl;
return 0;
}
初始,蚂蚁的运行轨迹看起来是混沌的,不可预测的,但是当这只蚂蚁超过一万步之后i,我们发现它居然开始沿着一条直线运行。如此诡异又不失优雅的蚂蚁。。。。。。
主要是看完整道题,突然想到这只小小的蚂蚁反映出来的不正是我们每个人的生活吗?每个人都按照自己很简单的游戏规则进行生活,就像这只蚂蚁一样,不过过程又不相同,但最终都会走上这条叫做命运的高速公路。每个人的成长经历不相同,但是我们最终也会走上我们的”高速公路“,无一例外。
不知道自己的所谓努力是否真的有用,不知道自己的所谓坚持还能持续多久。希望自己变得更加强大,希望自己不要假努力。因为就像某些事,你永远没有重来一遍的机会了。