魔戒(思维+bfs)

Description

蓝色空间号和万有引力号进入了四维水洼,发现了四维物体--魔戒。

这里我们把飞船和魔戒都抽象为四维空间中的一个点,分别标为 "S" 和 "E"。空间中可能存在障碍物,标为 "#",其他为可以通过的位置。

现在他们想要尽快到达魔戒进行探索,你能帮他们算出最小时间是最少吗?我们认为飞船每秒只能沿某个坐标轴方向移动一个单位,且不能越出四维空间。

Input

输入数据有多组(数据组数不超过 30),到 EOF 结束。

每组输入 4 个数 x, y, z, w 代表四维空间的尺寸(1 <= x, y, z, w <= 30)。

接下来的空间地图输入按照 x, y, z, w 轴的顺序依次给出,你只要按照下面的坐标关系循环读入即可。

for 0, x-1

    for 0, y-1

        for 0, z-1

            for 0, w-1

保证 "S" 和 "E" 唯一。

Output

对于每组数据,输出一行,到达魔戒所需的最短时间。

如果无法到达,输出 "WTF"(不包括引号)。

Sample Input

2 2 2 2
..
.S
..
#.
#.
.E
.#
..
2 2 2 2
..
.S
#.
##
E.
.#
#.
..

Sample Output

1
3
题解:其实四维空间博主也不太懂,这道题其实题意很简单求s->E的最短路,直接4维数组+bfs搜一下就好
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<stack>
 4 #include<queue>
 5 #include<algorithm>
 6 #include<map>
 7 #include<vector>
 8 #define PI acos(-1.0)
 9 using namespace std;
10 #define Inf 0x3f3f3f3f
11 typedef long long ll;
12 int m,n,x,y,flag=0;
13 char str[45][45][45][45];
14 int visit[50][50][50][50];
15 int dis[500][500];
16 int di[8][4]= {{0,0,0,1},{0,0,0,-1},{0,0,1,0},{0,0,-1,0},{0,1,0,0},{0,-1,0,0},{1,0,0,0},{-1,0,0,0}};
17 map<ll,ll>::iterator it;
18 struct node
19 {
20     int x,y,z,w,step;
21 } ;
22 int bfs(int sx,int sy,int sz,int sw)
23 {
24     queue<node>pp;
25     node s,q;
26     s.x=sx;
27     s.y=sy;
28     s.z=sz;
29     s.w=sw;
30     s.step=0;
31     pp.push(s);
32     memset(visit,0,sizeof(visit));
33     visit[s.x][s.y][s.z][s.w]=1;
34     while(!pp.empty())
35     {
36         s=pp.front();
37         if(str[s.x][s.y][s.z][s.w]=='E')
38         {
39             flag=0;
40             return s.step;
41         }
42         pp.pop();
43         for(int i=0; i<8; i++)
44         {
45             q.x=s.x+di[i][0];
46             q.y=s.y+di[i][1];
47             q.z=s.z+di[i][2];
48             q.w=s.w+di[i][3];
49             q.step=s.step;
50             if(q.x>=0&&q.x<m&&q.y>=0&&q.y<n&&q.z>=0&&q.z<x&&q.w>=0&&q.w<y&&!visit[q.x][q.y][q.z][q.w]&&str[q.x][q.y][q.z][q.w]!='#')
51             {
52                 q.step++;
53                 visit[q.x][q.y][q.z][q.w]=1;
54                 pp.push(q);
55             }
56         }
57     }
58 }
59 int main()
60 {
61     int z,w,sx,sy,sz,sw,i,j,ans;
62     while(scanf("%d%d%d%d",&m,&n,&x,&y)!=-1)
63     {
64         flag=1;
65         for(i=0; i<m; i++)
66             for(j=0; j<n; j++)
67                 for(z=0; z<x; z++)
68                     for(w=0; w<y; w++)
69                     {
70                         scanf(" %c",&str[i][j][z][w]);
71                         if(str[i][j][z][w]=='S')
72                         {
73                             sx=i,sy=j,sz=z,sw=w;
74                         }
75 
76                     }
77         ans=bfs(sx,sy,sz,sw);
78         if(flag)
79             puts("WTF");
80         else
81             printf("%d\n",ans);
82     }
83     return 0;
84 }
View Code

 

题意很简单从s->E的最短路,4维数组+bfs搜索一下就哦了,bfs裸题

转载于:https://www.cnblogs.com/moomcake/p/9351174.html

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

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

相关文章

php循环读取mysql_PHP无限循环获取MySQL数据

本篇文章主要介绍PHP无限循环获取MySQL数据的方法&#xff0c;感兴趣的朋友参考下&#xff0c;希望对大家有所帮助。具体如下&#xff1a;public function get_data($limit){$sql"select * from ((select id,name from mytable limit {$limit},10) union all (select id,n…

熬夜给这个C语言游戏项目找了几个bug

晚上看到一个非常有意思的C语言游戏项目&#xff0c;这个项目完全都是用C语言写的&#xff0c;而且资料也比较齐全&#xff0c;有github资料&#xff0c;也有QQ群。它的项目介绍是这样的&#xff1a;哦&#xff0c;还有它的官网http://painterengine.com/index.html还有它的git…

三个监控linux网卡流量脚本

脚本1&#xff1a;#!/bin/bashe0_in_old$(ifconfig eth0 |grep bytes |awk {print $2" "$6} |egrep -o [0-9] |head -n1)e0_out_old$(ifconfig eth0 |grep bytes |awk {print $2" "$6} |egrep -o [0-9] |tail -n1)>e0_total_old$(($e0_in_old $e0_out_…

laravel 服务提供者

1.创建服务提供者命令 php artisan make:provider 名称 2.绑定服务 //单例绑定 $this->app->singleton(b, function () {return new \App\Http\Services\Bservice; });//普通绑定 $this->app->bind(b, function () {return new \App\Http\Services\Bservice; }); 服…

怎么算掌握了mysql_MySQL你必须掌握了解的锁知识!

一、前言MySQL 的锁按照范围可以分为全局锁、表锁、行锁&#xff0c;其中行锁是由数据库引擎实现的&#xff0c;并不是所有的引擎都提供行锁&#xff0c;MyISAM 就不支持行锁&#xff0c;所以文章介绍行锁会以InnoDB引擎为例来介绍。二、全局锁MySQL 提供全局锁来对整个数据库实…

我学机械的可以转嵌入式吗?

▼点击下方名片&#xff0c;关注公众号▼编排 | strongerHuang微信公众号 | 嵌入式专栏前几天&#xff0c;有读者在后台问&#xff0c;他是一个机械专业的学生&#xff0c;想转到嵌入式方向&#xff0c;问我有没有必要转&#xff1f;如果转嵌入式该怎么学&#xff1f;今天我们特…

JavaScript 正则表达式(RegExp对象、属性、方法、String支持)

内容来源&#xff1a;JavaScript RegExp 对象参考手册 http://www.w3school.com.cn/js/jsref_obj_regexp.asp RegExp 对象 RegExp 对象属性 RegExp 对象方法 支持正则表达式的 String 对象的方法 RegExp 对象 RegExp 对象表示正则表达式&#xff0c;它是对字符串执行模式匹配…

入门物联网还得靠嵌入式

小米在十一周年的发布会上&#xff0c;展示了一个新产品&#xff1a;CyberDog仿生四足机器人“铁蛋”&#xff0c;继腾讯X实验室的四足机器人MAX后&#xff0c;小米也开始跨界入局尝试研制机器狗。2020年国家会议召开&#xff0c;加快推动新基建建设&#xff0c;各产业进行数字…

mysql中定时任务_mysql中定时任务的用法

1.什么是事件一组SQL集&#xff0c;用来执行定时任务&#xff0c;跟触发器很像&#xff0c;都是被动执行的&#xff0c;事件是因为时间到了触发执行&#xff0c;而触发器是因为某件事件(增删改)触发执行&#xff1b;mqsql的事件类似于linux的定时任务&#xff0c;不过是完全在m…

一文看懂 | 内存交换机制

本文基于 Linux-2.4.16 内核版本由于计算机的物理内存是有限的, 而进程对内存的使用是不确定的, 所以物理内存总有用完的可能性. 那么当系统的物理内存不足时, Linux内核使用什么方案来避免申请不到物理内存这个问题呢?相对于内存来说, 磁盘的容量是非常大的, 所以Linux内核实…

无论是cisco还是华三的书上对于子网划分有个问题需要解释

无论是cisco还是华三的书上对于子网划分有个问题&#xff0c;例如&#xff1a;如果子网为有五位 &#xff0c;则可以划分为30个子网。在实际中却不是这样的 子网位五位&#xff0c;可以划分为32个子网。那为什么这么写&#xff0c;难道是出书的人写错了&#xff0c;其实不是。这…

mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试

online DDL的前身是 innodb fast index creation(5.1和5.5), 5.6里对这个功能做了扩展&#xff1a;很多alter table的操作绕开了 table copying&#xff0c;支持DML并发操作。一、online ddl的支持测试&#xff1a;1、主键的增删主键添加&#xff1a;支持online ddl&#xff0c…

Stupid cat Doge (分形图)

【题目描述】 【题目链接】 http://noi.openjudge.cn/ch0204/8463/ 【算法】 为求等级N下的点的坐标可由几何关系找到其与等级N-1下对应点的关系&#xff0c;然后递归直至所有点的祖先&#xff08;等级0&#xff09;即可计算出坐标。 【代码】 1 #include <bits/stdc.h>2…

电赛时,如何快速搭建电路?

大家好&#xff0c;我是张巧龙&#xff0c;电赛只有四天三夜&#xff0c;电路方案可能需要多次验证&#xff0c;有的同学选择直接洞洞板焊接&#xff0c;自行跳线。有些同学可能会选择雕刻机雕刻。我带的学生一般会使用传统工艺-腐蚀法&#xff0c;这种方法的优点&#xff0c;成…

船舶自动识别系统(AIS)

摘要&#xff1a;在对船载自动识别系统&#xff08;AIS&#xff09;的功能研究的基础之上&#xff0c;研究了对GPS&#xff0c;ECDIS&#xff0c;ARPA&#xff0c;VTS&#xff0c;VDR&#xff0c;CHISREP&#xff0c;航标&#xff0c;物流&#xff0c;船-岸信息网等航运及海事管…

mysql安装包脚本之家_CentOS 7 MySQL5.7 TAR包解压 全自动化脚本

准备工作tar安装包&#xff1a;默认已经下载好mysql 安装包&#xff0c;名称为&#xff1a; mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz &#xff0c;我的安装包位置&#xff1a;/root 。我服务器没有网络&#xff0c;只能通过sftp上传。安装位置&#xff1a;mysql程序安装路…

Javaweb经典三层架构的演变

1.Javaweb经历了三个时期 ①JSP Model1第一代 JSP Model1是JavaWeb早期的模型&#xff0c;它适合小型Web项目&#xff0c;开发成本低&#xff01;Model1第一代时期&#xff0c;服务器端只有JSP页面&#xff0c;所有的操作都在JSP页面中&#xff0c;连访问数据库的API也在JSP页面…

我决定去读研了

读书这个事情&#xff0c;我一直都是比较推荐大家去做的&#xff0c;今天有一位同学找到我&#xff0c;问我现在哪个行业比较赚钱&#xff0c;自己马上要毕业了&#xff0c;想马上大显身手一下。然后我问他&#xff0c;你有没有赚钱的压力&#xff0c;还有自己目前的学习成绩怎…

如何制定好的方案之四:执行力是决定因素

如何制定好的方案之三:实施策略是关键 执行力是决定因素。 前面从方案的目标、资源一直说到很关键的实施策略&#xff0c;这一切再完美最终的决定因素却是&#xff1a;执行力&#xff01;执行力在完整的方案中是要用明文规定来实现过程控制的目的的。这些明文的规定&#xff0…

win2008 php mysql zend phpmyadmin_Windows2008 最新版Apache2.PHP5.MySQL6.PHPMyadmin.ZendOptimizer安装图解...

首先到PHPCHINA的网站www.phpchina.com下载最新的正式版本Apache 2.2.8地址&#xff1a;http://apache.mirror.phpchina.com/httpd/httpd-2.2.8-win32-src.zipPHP-5.2.5地址&#xff1a;http://cn.php.net/get/php-5.2.5-Win32.zip/from/this/mirrorMySQL-6.0.3-alpha-win32地址…