zoukankan      html  css  js  c++  java
  • cogs 1755. 爱上捉迷藏

    1755. 爱上捉迷藏

    ☆   输入文件:kadun.in   输出文件:kadun.out   简单对比
    时间限制:0.001 s   内存限制:2 MB

    【背景】

    乃们都玩过赛尔号吧……,那有木有玩过赛尔号2呢?(众人:你TM都多大了……)

    (⊙o⊙)…,多大怎么了,哥一直怀着一颗永不泯灭的童心~

    【问题描述】

        众所周知(呃,没玩过的除外),卡顿啾啾是赛尔号2里的一个普通系精灵,其未进化体名叫啾啾,进化后体型肥胖,励志减肥。历经磨难终于摆脱肥胖的困扰,前后变化实在让人难以想象。咳咳,这不是问题的重点……(众人:-_-#)

        (从众人乱拳中挤了出来)好吧,开始今天的重点。啾啾是个很调皮的精灵,它特别喜欢玩捉迷藏,本题即是由赛尔号2中爱上捉迷藏这一小游戏改编而来。通关小游戏就可以……(瞥了一眼青筋暴起的一群禽兽…)呃,不要那么暴力好不好~TAT

    啾啾藏在了一个m*n的矩阵中,这个矩阵有m*n个格子,啾啾就在其中之一。这种格子采用特殊材料制成,外表透明,藏在其中用眼睛根本无法看到什么变化。但是这毕竟是赛尔号的科技,所以小赛尔只要把手在格子上轻轻敲击就会得到回复,我们记为该格子的状态。其中若返回为X,则该点可能啾啾藏身的格子,但也有可能是距离啾啾很远的格子;若返回为N,则啾啾就在以该点为中心的7*7的矩阵中的某个格子;若返回为C, 则啾啾就在以该点为中心的5*5的矩阵中的某个格子;若返回为Z;则啾啾就在以该点为中心的3*3的矩阵中的某个格子。

    现在某个小赛尔为了快速通关而获得奖励,使用了外挂,从而获得了每个格子的返回值,但是看着眼花缭乱的字母,却无从下手,于是便找到了你(至于怎么找到的,为了我的生命安全,我还是不说了),请你编写程序帮助他找到啾啾所在的格子。(众人:这种水题还好意思说这么长时间!)啊!!!!!!(惨叫声)

    【输入数据格式】

    第一行两个数n,m,表示一个m*n的矩阵;

    第二行到第m−1行每行一个长度为n的字符串,表示矩阵状态。

    【输出数据格式】

    一行两个数,分别为啾啾藏身的格子的列数和行数。

    【输入样例】

    6 4

    ZZZCNX

    ZXZCNX

    ZZZCNX

    CCCCNX

    【输出样例】

    2 2

    【数据范围及约定】  

    20%的数据:1≤n,m≤5;

    60%的数据:1≤n,m≤70;

    100%的数据:1≤n,m≤100;  

    【Hite】

    真的真的很水。

    思路:暴力搜索。

    跑的慢的

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,m,num;
    struct nond{
        int x,y,flag;
    }v[11010];
    int map[110][110];
    int main(){
        freopen("kadun.in","r",stdin);
        freopen("kadun.out","w",stdout);
        scanf("%d%d",&m,&n);
        for(int i=1;i<=n;i++){
            char s[110];
            scanf("%s",s+1);
            for(int j=1;j<=m;j++){
                if(s[j]=='X'){
                    v[++num].x=i;
                    v[num].y=j;
                }
                else if(s[j]=='N')    map[i][j]=3;
                else if(s[j]=='C')    map[i][j]=2;
                else if(s[j]=='Z')    map[i][j]=1;
            }
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                if(map[i][j]!=0)
                    for(int k=1;k<=num;k++)
                        if(v[k].flag||v[k].x<i-map[i][j]||v[k].x>i+map[i][j]||v[k].y<j-map[i][j]||v[k].y>j+map[i][j])
                            v[k].flag=1;
        for(int i=1;i<=num;i++)
            if(!v[i].flag){
                cout<<v[i].y<<" "<<v[i].x;
                break;
            }
    }

    跑的快的

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int m,n;
    char s[110][110];
    int main(){
        freopen("kadun.in","r",stdin);
        freopen("kadun.out","w",stdout);
        scanf("%d%d",&m,&n);
        for(int i=0;i<n;i++)
            scanf("%s",s[i]);
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                if(s[i][j]=='X'&&(s[i+1][j]=='Z'&&s[i][j+1]=='Z'||s[i-1][j]=='Z'&&s[i][j-1]=='Z')){
                    printf("%d %d",j+1,i+1);
                    return 0;
                }
        return 0;
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    关于AFNetworking访问网络超时的设置
    【iOS程序启动与运转】- RunLoop个人小结
    iOS开发中常用到的加密方式
    iOS开发路线简述
    iOS中多线程的实现方案
    HTTP原理
    浅析无线定位技术
    iOS-MVVM设计模式
    打造强大的BaseModel(1):让Model自我描述
    介绍一个基于jQuery的Cookie操作插件
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7731738.html
Copyright © 2011-2022 走看看