码迷,mamicode.com
首页 > 其他好文 > 详细

fjnu2019第二次友谊赛 B题

时间:2019-12-15 16:12:45      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:algo   坐标   name   font   game   i++   %s   scan   span   

### 题目链接 ###

 

题目大意:

给你一个 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!\n");
        return 0;
    }
    else printf("Alive! (%d,%d)\n",u,v);
}

fjnu2019第二次友谊赛 B题

标签:algo   坐标   name   font   game   i++   %s   scan   span   

原文地址:https://www.cnblogs.com/Absofuckinglutely/p/12044396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!