fjnu2019第二次友谊赛 B题
Posted absofuckinglutely
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fjnu2019第二次友谊赛 B题相关的知识,希望对你有一定的参考价值。
题目大意:
给你一个 n * m 的地图以及小蛇蛇头的初始位置,告诉你它会往 上、下、左、右 四个方向走。若在走的过程中(包括结束时)会使得小蛇越界,则输出 "Game Over!" ,否则输出 "Alice!" 以及蛇头最后的坐标位置。
分析:
简单模拟题,只需模拟小蛇蛇头的运动方向,看它是否会在运动的过程中(包括结束时)死掉。若死掉则直接退出模拟并输出 "Game Over!" 即可。
代码如下:
#include<iostream> #include<algorithm> #include<string.h> using namespace std; int n,m; int to[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; char a[408][408],s[100008]; inline int Get(char x){ if(x==‘W‘) return 0; if(x==‘S‘) return 1; if(x==‘A‘) return 2; if(x==‘D‘) return 3; } int main() { scanf("%d%d",&n,&m); int u,v; for(int i=1;i<=n;i++){ scanf("%s",a[i]+1); } bool q=false; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]==‘@‘){ u=i,v=j; a[i][j]=‘.‘; q=true; break; } } if(q) break; } q=false; scanf("%s",s+1); int len=strlen(s+1); for(int i=1;i<=len;i++){ int j=Get(s[i]); u+=to[j][0],v+=to[j][1]; if(u<1||u>n||v<1||v>m){q=true;break;} } if(q){ printf("Game Over! "); return 0; } else printf("Alive! (%d,%d) ",u,v); }
以上是关于fjnu2019第二次友谊赛 B题的主要内容,如果未能解决你的问题,请参考以下文章