三维数组对于我这个萌萌的新手来说真是酷酷的,帅到不行,,,

三维数组前面还看到空间的哪一题HDOJ1240,这一题时间上的标记,更酷了!!!

不说废话了,贴一发代码;

#include <stdio.h>

#include <iostream>

#include <sstream>

#include <string.h>

#include <math.h>

#include<stdlib.h>

#include <queue>

#include <set>

#include <algorithm>

using namespace std;

#define N 110

char a[N][N];

int flag[N][N][110];

int dx[4]={0,0,-1,1};

int dy[4]={1,-1,0,0};

struct asd{

    int x,y,step;

}now,ne;

queue<asd>q;

int r,c,k;

int ax,ay,bx,by;

void bfs()

{

    int i,s;

    memset(flag,0,sizeof(flag));

    while(!q.empty())

        q.pop();

    now.x=ax;

    now.y=ay;

    now.step=0;

    flag[ax][ay][0]=1;

    q.push(now);

    while(!q.empty())

    {

        now=q.front();

        q.pop();

        for(i=0;i<4;i++)

        {

            int aa=dx[i]+now.x;

            int bb=dy[i]+now.y;

            if(a[aa][bb]=='G')

            {

                printf("%d\n",now.step+1);

                return;

            }

            s=(now.step+1)%k;

            if(aa<0||aa>=r||bb<0||bb>=c||flag[aa][bb][s]||(a[aa][bb]=='#'&&s))

                continue;

            ne.x=aa;

            ne.y=bb;

            ne.step=now.step+1;

            flag[aa][bb][s]=1;

            q.push(ne);

        }

    }

    printf("Please give me another chance!\n");

}

int main()

{

    int i,j,T;

    scanf("%d",&T);

    while(T--)

    {

        scanf("%d%d%d",&r,&c,&k);

        for(i=0;i<r;i++)

        {

            scanf("%s",a[i]);

        }

        int f1,f2;

        f1=f2=0;

        for(i=0;i<r;i++)

        {

            for(j=0;j<c;j++)

            {

                if(a[i][j]=='Y')

                {

                    ax=i;

                    ay=j;

                    f2=1;

                }

                if(a[i][j]=='G')

                {

                    bx=i;

                    by=j;

                    f1=1;

                }

                if(f1&&f2)

                    break;

            }

            if(f1&&f2)

                break;

        }

        bfs();

    }

    return 0;

}



HDOJ2579,BFS(三维数组标记)的更多相关文章

  1. hdu 5433 Xiao Ming climbing(bfs+三维标记)

    Problem Description   Due to the curse made by the devil,Xiao Ming is stranded on a mountain and can ...

  2. hdoj 2579 Dating with girls(2)【三重数组标记去重】

    Dating with girls(2) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. Clumsy Keke【模拟+三维数组】

    Clumsy Keke 题目链接(点击) Problem Description Keke is currently studying engineering drawing courses, and ...

  4. Jni :三维数组处理方法 ,以整形三维数组为例 C++实现

    本文原创,转载请注明地址:http://www.cnblogs.com/baokang/p/4982846.html 关于Jni的基本使用方法,请参阅:Java 调用 C++ (Java 调用 dll ...

  5. C语言三维数组分解

    很多人在学习C的时候,感觉三维数组很难想象,而且不理解深度是什么?做了一个图,帮大家分解一下                                                       ...

  6. Java 一维数组 二维数组 三维数组

    二维数组包含一位数组  三维数组就是在二维数组的基础上,再加一层.把二维数组看做是一维数组就可以了,按照上述理解类推.   下面是 一维 二维 三维数组例子   一维数组: int[] array1 ...

  7. 三维数组——与 宝玉QQ群讨论交流之二

    宝玉 12:27:35 这几天看了大部分大家交的作业,发现一个主要问题还是卡在对三维数组的理解上,之前把三维数组类比成三维空间可能会造成误导 宝玉 12:27:45 其实鞠老师解释的很好: 三维数组 ...

  8. c# 基础之数组(包含三维数组)

    public enum ChessType { White = , None=, Black=, } class Program { static void Main(string[] args) { ...

  9. php三维数组变二维数组

    <?php $result = Array(0 => Array(0 => Array(bid => 41,brealname => 'we教官',cid => 4 ...

随机推荐

  1. spring 集成 mybatis 后数据源初始化失败问题分析

    问题背景: 项目使用spring,springmvc框架,后边需操作关系数据库,选择了mybatis + durid,集成mybatis后,项目一直启动失败.错误的原因是dataSource初始化的时 ...

  2. React深入源码--了解Redux用法之Provider

    在Redux中最核心的自然是组件,以及组件相关的事件与数据流方式.但是我们在Redux中并没有采用传统的方式在getInitialState()中去初始化数据,而是采用Provider统一处理,省去了 ...

  3. Redisson实现Redis分布式锁的N种姿势(转)

    Redis几种架构 Redis发展到现在,几种常见的部署架构有: 单机模式: 主从模式: 哨兵模式: 集群模式: 我们首先基于这些架构讲解Redisson普通分布式锁实现,需要注意的是,只有充分了解普 ...

  4. 解决Windows x64bit环境下无法使用PLSQL Developer连接到Oracle DB中的问题

    本文是原创文章,转载请注明出处: http://blog.csdn.net/msdnchina/article/details/46416455 解决Windows x64bit环境下无法使用PLSQ ...

  5. 一起来学linux:FTP服务器搭建

    首先安装vsftpd: apt install vsftpd有下面几个重要的配置文件:1 /etc/vsftpd.conf. 这个是vsftpd的配置文件.通过“参数=设置值”的方式来设置的. 2 / ...

  6. [Java多线程] volatile 关键字正确使用方法

    volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性,即多线程环境中,使用 volatile 关键字的变量仅可以保证不同线程读取变量时,可以读到最新修改的变量值,但是 ...

  7. REUSE_ALV_GRID_DISPLAY_LVC 的user_command

    *&--------------------------------------------------------------------* *& Form CALL_FUNCTIO ...

  8. 【Effective C++】设计与声明

    条款18:让接口容易被正确使用,不易被误用 1,好的接口很容易被正确使用,不容易被误用.你应该在你的所有接口中努力达成这些性质. 2,“促进正使用”的办法包括接口的一致性,以及与内置类型的行为兼容. ...

  9. wifi方式调试android程序

    1. 通过wifi, 利用adb来连接手机. 在pc的cmd中输入命令: adb connect 192.168.1.100 其中adb就是手机的ip. 如果连接成功, 就可以进入android的sh ...

  10. Nginx配置故障转移

    当上游服务器(真实访问服务器),一旦出现故障或者是没有及时相应的话,应该直接轮训到下一台服务器,保证服务器的高可用. 如果上游服务器的某一台宕机了,直接轮训到下一个~ 8080 8081 8082 关 ...