九度oj 题目1456:胜利大逃亡

题目描述:

Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,Ignatius每分钟能从一个坐标走到相邻的六个坐标中的其中一个.现在给你城堡的地图,请你计算出Ignatius能否在魔王回来前离开城堡(只要走到出口就算离开城堡,如果走到出口的时候魔王刚好回来也算逃亡成功),如果可以请输出需要多少分钟才能离开,如果不能则输出-1.

输入:

输入数据的第一行是一个正整数K,表明测试数据的数量.每组测试数据的第一行是四个正整数A,B,C和T(1<=A,B,C<=50,1<=T<=1000),它们分别代表城堡的大小和魔王回来的时间.然后是A块输入数据(先是第0块,然后是第1块,第2块......),每块输入数据有B行,每行有C个正整数,代表迷宫的布局,其中0代表路,1代表墙。

输出:

对于每组测试数据,如果Ignatius能够在魔王回来前离开城堡,那么请输出他最少需要多少分钟,否则输出-1.

样例输入:
1
3 3 4 20
0 1 1 1
0 0 1 1
0 1 1 1
1 1 1 1
1 0 0 1
0 1 1 1
0 0 0 0
0 1 1 0
0 1 1 0 
样例输出:
11

三维的迷宫
用广度优先搜索
代码如下
 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <queue>
 5 #include <iostream>
 6 using namespace std;
 7 
 8 int dir[][3] = {{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}};
 9 int cubic[52][52][52];
10 int tcnt[52][52][52];
11 
12 struct Point{
13     int x, y, z, t;
14     Point(int x, int y, int z, int t) {
15         this->x = x, this->y = y, this->z = z, this->t = t;
16     }
17 };
18 
19 queue <Point> que;
20 
21 int main(int argc, char const *argv[])
22 {
23     int a,b,c,t;
24     //freopen("input.txt","r",stdin);
25     int K;
26     while(scanf("%d",&K) != EOF) {
27         while(K--) {
28             scanf("%d %d %d %d",&a,&b,&c,&t);
29             for(int i = 0; i < a; i++) {
30                 for(int j = 0; j < b; j++) {
31                     for(int k = 0; k < c; k++) {
32                         scanf("%d",&cubic[i][j][k]);
33                     }
34                 }
35             }
36             while(!que.empty()) {
37                 que.pop();
38             }
39             memset(tcnt, -1, sizeof(tcnt));
40             Point O(0,0,0,0);
41             que.push(O);
42             int ans = -1;
43             while(!que.empty()) {
44                 Point p = que.front();que.pop();
45                 int t0 = p.t;
46                 if(t0 > t) {
47                     continue;
48                 }
49                 if(p.x == a-1 && p.y == b-1 && p.z == c-1) {
50                     ans = t0;
51                     break;
52                 }
53                 for(int i = 0; i < 6; i++) {
54                     int xt = p.x + dir[i][0];
55                     int yt = p.y + dir[i][1];
56                     int zt = p.z + dir[i][2];
57                     int tt = t0 + 1;
58                     if(xt < a && xt >= 0 && yt < b && yt >= 0 && zt < c && zt >= 0 && cubic[xt][yt][zt] == 0&& tcnt[xt][yt][zt] == -1) {
59                         Point toAdd(xt,yt,zt,tt);
60                         que.push(toAdd);
61                         tcnt[xt][yt][zt] = tt;
62                     }
63                 }
64             }
65             printf("%d\n", ans);    
66         }
67     }
68         return 0;
69 }

 

转载于:https://www.cnblogs.com/jasonJie/p/5873319.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMX:一些入门说明

JMX&#xff08;Java管理扩展&#xff09;是一种J2SE技术&#xff0c;可以管理和监视Java应用程序。 基本思想是实现一组管理对象&#xff0c;并将实现注册到平台服务器&#xff0c;在平台服务器上&#xff0c;可以使用一组连接器或适配器从本地或远程调用这些实现到JVM。 一个…

解释java程序中的异常机制_Java编程中的异常机制

本文旨在以初学者的角度来学习Java异常的知识&#xff0c;尽量简单&#xff0c;一些细枝末节的知识不会讲述&#xff0c;但不影响对知识的掌握。&#xff08;比如try-catch可以嵌套&#xff0c;不太会这么用&#xff09;1.什么是异常我们先举个例子int x 10/0;在IDE里输入这样…

keras做多层神经网络

一、 背景与目的 背景&#xff1a;配置好了theano&#xff0c;弄了gpu&#xff0c; 要学dnn方法。 目的&#xff1a;本篇学习keras基本用法&#xff0c; 学习怎么用keras写mlp&#xff0c;学keras搞文本的基本要点。 二、 准备 工具包&#xff1a; theano、numpy、keras等工具包…

配置环境变量

由于写了一个关于生成签名需要配置环境变量&#xff0c;所以在这里顺便把配置环境变量的步骤说一下 1.右键点击计算机&#xff0c;然后点击高级系统设置 2.点击环境变量&#xff0c;下方出现的即为系统变量&#xff0c;双击path就能直接修改&#xff0c; 转载于:https://www.cn…

使用JavaFX AnimationTimer

回想一下&#xff0c;给AnimationTimer起个名字可能不是一个好主意&#xff0c;因为它不仅可以用于动画&#xff0c;还可以用于测量&#xff1a;fps速率&#xff0c;碰撞检测&#xff0c;模拟步骤&#xff0c;游戏主循环等实际上&#xff0c;大部分时间我都看到了AnimationTime…

python列表姓氏_python数据分析实例(六) 中国姓氏数据

bokeh联动柱状图&#xff0c;Excel空间柱状图、空间热力图&#xff0c;Echarts空间柱状图&#xff0c;常用函数&#xff1a;df[工作地_省] df[工作地].str.split(省).str[0]df[工作地_市] df[工作地_市] df[工作地].str.split(省).str[1].str.split(市).str[0]df[工作地_市][…

JavaFX 2 GameTutorial第3部分

介绍 Ť他是与一个六个部分组成的系列的第3部分的JavaFX 2游戏教程。 如果您错过了第1部分和第2部分 &#xff0c;建议您在开始本教程之前先进行阅读。 回顾第二部分&#xff0c;我讨论了游戏循环的内部工作原理&#xff0c;其中我们使用动画&#xff08;JavaFX Timeline &…

Selenium WebDriver + python 自动化测试框架

目标 组内任何人都可以进行自动化测试用例的编写 完全分离测试用例和自动化测试代码&#xff0c;就像写手工测试用例一下&#xff0c;编写excel格式的测试用例&#xff0c;包括步骤、检查点&#xff0c;然后执行自动化工程&#xff0c;即可执行功能自动化测试用例&#xff0c;包…

mysql游戏减少积分活动图_plantuml-绘制状态图和活动图和部署图​

背景状态图&#xff1a;对象的所有状态&#xff0c;以及基于事件发生的状态改变的过程&#xff1b;活动图&#xff1a;用例的工作流程&#xff1b;部署图&#xff1a;系统的软硬件物理体系结构&#xff1b;状态图基本语法元素语法说明开始和结束状态[*]标识开始和结束状态箭头-…

windows中当你的键盘无法使用时我们可以用另一种方法哦

1.使用WinR打开cmd窗口 2.输入osk回车就出现了一个虚拟的小键盘啦&#xff0c;当你的键盘坏掉后非常实用哦 转载于:https://www.cnblogs.com/qianzf/p/6780496.html

python web.py 404_找不到web.py开发服务器-favicon.ico-404

py API文档引用了一个“web.SEE OTHER()”函数&#xff0c;该函数生成一个303 SEE OTHER响应&#xff0c;将浏览器重定向到另一个位置。(请参见http://webpy.org/docs/0.3/api#web.application)这是一个服务器端的解决方案&#xff0c;它不需要在html文件中更改头&#xff1b;如…

NetBeans 7.2引入了TestNG

代码生成的优点之一是能够查看如何使用特定的语言功能或框架。 正如我在《 NetBeans 7.2 beta&#xff1a;更快&#xff0c;更有用》一文中所讨论的那样&#xff0c; NetBeans 7.2 beta提供了TestNG集成 。 除了对该功能的单一引用之外&#xff0c;我在该帖子中没有进一步阐述&…

Javascript模块化编程(三):require.js的用法

一、为什么要用require.js&#xff1f; 最早的时候&#xff0c;所有Javascript代码都写在一个文件里面&#xff0c;只要加载这一个文件就够了。后来&#xff0c;代码越来越多&#xff0c;一个文件不够了&#xff0c;必须分成多个文件&#xff0c;依次加载。下面的网页代码&…

[KISSY5系列]淘宝全终端框架 KISSY 5--从零开始使用

KISSY 是淘宝一个开源的 JavaScript 库&#xff0c;包含的组件有&#xff1a;日历、图片放大镜、卡片切换、弹出窗口、输入建议等 一、简介 KISSY 是一款跨终端、模块化、高性能、使用简单的 JavaScript 框架。 除了完备的工具集合如 DOM、Event、Ajax、Anim 等它还提供了经典的…

几万条数据的excel导入到mysql_【记录】2万多条数据的Excel表格数据导入mysql数据库...

主题刚开始的时候做了两个小方案&#xff01;第一个是直接Excel处理完导入&#xff0c;但是这个导入的话虽然简单出错率很大&#xff01;第二个是想直接用php做个小程序直接导入数据&#xff0c;但是想了想2万条数据处理&#xff0c;百分之百浏览器会一直转&#xff0c;最后不知…

JDeveloper中的Java反编译器

Java Decompiler是一个独立的图形实用程序&#xff0c;显示“ .class”文件的Java源代码。 下面是Java Decompiler程序的快照 您可以从这里下载该程序 我将说明如何将此程序用作Jdeveloper中的外部工具 Java Decompiler和Jdeveloper之间的集成 您可以将此程序添加到Jdevelo…

NGUI学习随笔

一、NGUI的直接用法 1. Attach a Collider&#xff1a;表示为NGUI的某些物体添加碰撞器&#xff0c;如果界面是用NGUI做的&#xff0c;只能这样添加。&#xff08;注&#xff1a;用Component添加无效&#xff09;。2. Attach an Anchor&#xff1a;表示为该物体添加了…

Git 修改源地址

git remote set-url origin http://git.xxx.com/xxx/repo.git 转载于:https://www.cnblogs.com/savokiss/p/5892543.html

mysql主从进行扩展_MySQL 主从扩展

MySQL 主从扩展常见问题排查1. 数据不一致:SHOW SLAVE STATUS \G;Last_Errno:1062Last_Error:ErrorDuplicate entryxxxn-66-77for key1on query.Defaultdatabase:guild.Query:insert into pynpcrecord setMapCode xxxn, UpdateTime 2015-08-0700:00:32解决方法: 在从库上将重复…

JRockit – JRCMD有用的命令

自2007年以来&#xff0c;我一直在使用JRockit。我发现它比Hotspot速度慢&#xff0c;但在诊断和分析问题上总是更好。 从去年夏天开始&#xff0c;我一直在为一家国际电信系统供应商工作。 我们在HP OpenCall Convergent Communication Platform之上为电信运营商设计和实施各种…