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

三维数组前面还看到空间的哪一题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. aapt命令获取apk具体信息(包名、版本号号、版本号名称、兼容api级别、启动Activity等)

    aapt命令获取apk具体信息(包名.版本号号.版本号名称.兼容api级别.启动Activity等) 第一步:找到aapt 找到sdk的根文件夹,然后找到build-tools文件夹.然后会看到一些b ...

  2. Java类加载器(死磕5)

    Java类加载器(  CLassLoader )  死磕5:  自定义一个文件系统classLoader 本小节目录 5.1. 自定义类加载器的基本流程 5.2. 入门案例:自定义文件系统类加载器 5 ...

  3. Android笔记之获取显示器宽高

    原先的Display.getWidth().Display.getHeight()已废弃 推荐的获取Display宽高的方法如下 DisplayMetrics metrics = new Displa ...

  4. android开发基础知识了解

    JDK下载:www.oracle.com; SDK下载:www.android.developer.com; eclipse下载:www.eclipse.org;

  5. 最简单的基于FFMPEG的Helloworld程序

    ===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...

  6. Xcode使用的一些小技巧,值得一看。

    有时我们需要对一个已有项目进行重构,改进设计,提高代码质量.以下几个Xcode 4中的功能,会使重构的工作变得轻松很多. 1.打开项目我的项目是Xcode3.x中编辑的,在用Xcode 4 打开时出现 ...

  7. 关于node.js的安装与删除

    安装node.js 先切换到root用户安装 openssl-devel su - yum install openssl-devel 下载源代码自己编译以下代码中的tar.gz包根据node.js官 ...

  8. jquery带按钮的图片切换效果

    <!doctype html> <html> <head> <meta charset="gb2312"> <title> ...

  9. 基于BASYS2的VHDL程序——数字钟(最终版)

    转载请注明原地址:http://www.cnblogs.com/connorzx/p/3674178.html 调时电路正常工作.一切正常.发现做FPGA还是得从数电的思路思考,设置一个预置使能端,预 ...

  10. Linux-用户和权限

    1 Linux所有内容都是文件 归一的思想 面向对象的思想 文件只需要做增删改查的操作 2 延迟读取 一般的文本读取工具都是先将内容全部都读入内存中 cat的机制不同 是读一行显示一行 这与它的功能有 ...