原题链接:蓝桥杯2014年第五届真题-兰顿蚂蚁
解题思路:
没啥好说的,根据行为来设计函数,然后调用K次就可以了。
我觉得这一题可以作为游戏设计入门的编程练习题。
参考代码:
写的比较多,但是思路清晰
#include<bits/stdc++.h> #define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); using namespace std; const int maxn=105; int mmp[maxn][maxn];//0表示白格,1表示黑格 int m,n; //地图长度 m行,n列 int x,y; //蚂蚁位置 char way; //蚂蚁方向 int k; //蚂蚁得步数 char change(int color) { if(color==0&&way=='U'||color==1&&way=='D') { way='R'; } else if(color==0&&way=='D'||color==1&&way=='U') { way='L'; } else if(color==0&&way=='L'||color==1&&way=='R') { way='U'; } else if(color==0&&way=='R'||color==1&&way=='L') { way='D'; } } void change_color() { if(mmp[x][y]==1) { mmp[x][y]=0; } else if(mmp[x][y]==0) { mmp[x][y]=1; } } void move() { if(way=='U') { x--; } else if(way=='D') { x++; } else if(way=='L') { y--; } else if(way=='R') { y++; } } int main() { hh; while(cin>>m>>n) { memset(mmp,-1,sizeof(mmp)); for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { cin>>mmp[i][j]; } } cin>>x>>y>>way>>k; while(k--) { change_color(); change(mmp[x][y]); move(); } cout<<x<<' '<<y<<endl; } return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复