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题的主要内容,如果未能解决你的问题,请参考以下文章

2019年FJNU低编赛 G题(dfs博弈)

2019欢乐友谊赛A题题解

FJUT2019暑假第二次周赛 A题

第二次在对话框中膨胀片段时出错

2019下学期第二次个人周赛—A题

使用选项卡第二次返回片段显示空白片段