zoukankan      html  css  js  c++  java
  • NOJ2076

    天神小学

    Description:
    《corpse party:blood drive》中有这么一段,班长筱崎亚由美拿到六鬼门的晶石,导致了涅?的暴走,天小的崩溃,靠着幸子的力量才逃出了天小。(剧情什么的不重要)

    现在我们假设没有幸子,班长需要靠自己的力量逃出天神小学。可以把天神小学看作是一个二维的迷宫,每一秒都只能从当前位置走到上下左右四个相邻的格子里,因为天小一直在崩溃,所以有很多点是无法行走的。问班长能不能在天小完全崩溃,即t秒内逃出天神小学。

    Input:
    第一行一个整数T,表示数据组数

    每组数据第一行输入3个整数n,m,t分别表示迷宫的行数,列数,以及距离天小崩溃剩余的时间。(3≤n,m≤20,t≤100)

    接下来输入n行,每行有一个长度为m的字符串。

    其中字符’.’表示可以通行

    字符’*’表示无法通行

    字符’O’表示出口

    字符’X’表示班长的起始位置

    Output:
    若能逃离 输出 "happy end"

    否则输出 "bad end"

    #include<iostream>
    #include<cstring>
    
    using namespace std;
    
    #define PII pair<int, int>
    
    const int N = 30;
    
    char g[N][N], st[N][N];
    PII q[N * N];
    int tt = -1, hh = 0;
    int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
    int a, b, t;
    
    
    int bfs(int x, int y){
        q[++ tt] = {x, y};
        st[x][y] = 1;
        while(hh <= tt){
            auto v = q[hh ++];
            int x = v.first, y = v.second;
            for(int i = 0; i < 4; i ++){
                int nx = x + dx[i], ny = y + dy[i];
                if(nx < 0 || nx >= a || ny < 0 || ny >= b || st[nx][ny]) continue;
                if(g[nx][ny] == '*') continue;
                st[nx][ny] = st[x][y] + 1;
                q[++ tt] = {nx, ny};
                if(g[nx][ny] == 'O' && st[nx][ny] - 1 <= t) return 1;
            }
        }
        return 0;
    }
    
    int main(){
        int T;
        cin >> T;
        while(T --){
            memset(st, 0, sizeof st);
            tt = -1, hh = 0;
            
            cin >> a >> b >> t;
    
            int sx, sy;
    
            for(int i = 0; i < a; i ++)
                for(int j = 0; j < b; j ++){
                    cin >> g[i][j];
                    if(g[i][j] == 'X')
                        sx = i, sy = j;
                }
    
            if(bfs(sx, sy)) puts("happy end");
            else puts("bad end");
        }
    
        return 0;
    }
    
  • 相关阅读:
    C/C++取出变量的每一位的值(第一次知道还有QBitArray)
    什么样的程序员适合去创业公司
    VC2008如何生成及使用DLL(图文并茂,完整版)
    Qt浅谈之二十六图片滑动效果
    Qt 学习之路 2(75):线程总结
    Big Data Ingestion and streaming product introduction
    Qt学习之路(24): QPainter(改写paintEvent)
    Qt学习之路(54): 自定义拖放数据对象
    Qt学习之路(49): 通用算法
    Qt核心剖析: moc
  • 原文地址:https://www.cnblogs.com/tomori/p/13591996.html
Copyright © 2011-2022 走看看