学习总结!

最近主要学习了java,题目的话就写了两道。

 这道题目运用三维的bfs,第一次做时无从下手,原来可以利用三维数组(第一次用三维数组)可以解决这类问题,然后套bfs模板即可。

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int N=32;
char g[N][N][N];
int d[N][N][N];
int l,r,c,ans;
int dx[6]={0,0,1,-1,0,0};
int dy[6]={0,0,0,0,1,-1};
int dz[6]={1,-1,0,0,0,0};
int x1,y11,z1,x2,y2,z2;
struct w{
	int x;
	int y;
	int z;
};
typedef w wh;
int bfs()
{
	queue<wh>q;
	memset(d,-1,sizeof(d));
	q.push({x1,y11,z1});
	d[x1][y11][z1]=0;
	while(q.size())
	{
		wh t=q.front();
		q.pop();
		for(int k=0;k<6;++k)
		{
			int tx=t.x+dx[k];
			int ty=t.y+dy[k];
			int tz=t.z+dz[k];
			if(tx>=0&&tx<l&&ty>=0&&ty<r&&tz>=0&&tz<c&&g[tx][ty][tz]=='.'&&d[tx][ty][tz]==-1)
			{
				q.push({tx,ty,tz});
				d[tx][ty][tz]=d[t.x][t.y][t.z]+1;
				
			}
		}
	}
	return d[x2][y2][z2];
}
int main()
{
	while(cin>>l>>r>>c&&(l||r||c))
	{
		for(int i=0;i<l;++i)
			for(int j=0;j<r;++j)
				for(int k=0;k<c;++k)
				{
					cin>>g[i][j][k];
					if(g[i][j][k]=='S')
					{
						x1=i;
						y11=j;
						z1=k;
					}	
					if(g[i][j][k]=='E')
					{
						x2=i;
						y2=j;
						z2=k;
						g[i][j][k]='.';
					}
				}
		ans=bfs();
		if(ans==-1)
			cout<<"Trapped!"<<endl;
		else
			cout<<"Escaped in"<<" "<<ans<<" "<<"minute(s)."<<endl;
	}
	return 0;
}

这道题目和洛谷上的一道题目非常像,几乎一摸一样,做题时不要忘记在循环里,每循环一次都要把答案归零,不然会不断累加。这道题主要考察联通块,这类问题主要是从一个目标点出发,经过之后就要更新,然后在不断往各个方向走。记录答案即可。 

#include<iostream>
using namespace std;
const int N=105;
int m,n,ans;
char g[N][N];
int dx[8]={0,1,0,-1,1,1,-1,-1};
int dy[8]={1,0,-1,0,1,-1,1,-1};
void dfs(int x,int y)
{
	g[x][y]='*';
	for(int k=0;k<8;k++)
	{
		int tx=x+dx[k];
		int ty=y+dy[k];
		if(tx>=0&&tx<m&&ty>=0&&ty<n)
		{
			if(g[tx][ty]=='@')
			{
				dfs(tx,ty);
			}
		}
	}
}
int main()
{
	while(cin>>m>>n&&(m||n))
	{
		for(int i=0;i<m;i++)
			for(int j=0;j<n;j++)
				cin>>g[i][j];
		for(int i=0;i<m;i++)
			for(int j=0;j<n;j++)
			{
				if(g[i][j]=='@')
				{
					dfs(i,j);
					ans++;
				}
			}
		cout<<ans<<endl;
		ans=0;
	}
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法体系-11 第十一节:二叉树基本算法(上)

一 两链表相交 1.1 题目描述 给定两个可能有环也可能无环的单链表&#xff0c;头节点head1和head2。请实现一个函数&#xff0c;如果两个链表相交&#xff0c;请返回相交的 第一个节点。如果不相交&#xff0c;返回null 【要求】 如果两个链表长度之和为N&#xff0c;时间复杂…

瑞_Redis_短信登录_基于Session实现登录流程

文章目录 项目介绍1 短信登录1.1 项目准备1.2 基于Session实现登录流程1.2.1 功能流程介绍1.2.1.1 发送短信验证码1.2.1.2 短信验证码登录、注册1.2.1.3 校验登录状态 1.2.2 实现发送短信验证码功能1.2.2.1 页面流程1.2.2.2 代码实现1.2.2.3 测试 1.2.3 实现短信验证码登录、注…

SLAM 算法综述

LiDAR SLAM 其主要思想是通过两个算法&#xff1a;一个高频激光里程计进行低精度的运动估计&#xff0c;即使用激光雷达做里程计计算两次扫描之间的位姿变换&#xff1b;另一个是执行低频但是高精度的建图与校正里程计&#xff0c;利用多次扫描的结果构建地图&#xff0c;细化位…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 3月20日,星期三

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年3月20日 星期三 农历二月十一 春分 1、 教育部发布新增24种本科专业 涉及智能视觉工程、足球运动等。 2、 香港特区立法会全票通过《维护国家安全条例》&#xff0c;将于23日刊宪。 3、 国际乒联更新世界排名&#xff0c…

高效数据处理:亚信安慧AntDB在行动

亚信安慧AntDB数据库在运营商自主可控替换项目中的成功应用&#xff0c;具有极其重要的意义。该数据库的落地&#xff0c;不仅为这一项目注入了强大的支持力量&#xff0c;还在更大程度上提升了整体的运营效能。作为一种高效可靠的数据库解决方案&#xff0c;AntDB引入了先进的…

【项目】YOLOv5+PaddleOCR实现艺术字验证码识别

YOLOv5PaddleOCR实现艺术字类验证码识别 一、引言1.1 实现目标1.2 人手动点选验证码逻辑1.3 计算机点选逻辑 二、计算机验证方法2.1 PaddleOCR下方文字识别方法2.2 YOLOv5目标检测方法2.3 艺术字分类方法2.4 返回结果 三、代码获取 一、引言 1.1 实现目标 要识别的验证码类型…

浏览器的渲染原理

浏览器的渲染原理 来总结一下最近理解的浏览器渲染原理和流程 首先浏览器是多进程的&#xff0c;分为渲染进程、插件进程、主进程、网络进程以及GPU进程 而我们打包出来的js html css文件&#xff0c;经过浏览器的渲染进程&#xff0c;就会展示出看到的页面。下面主要来了解一…

mysql索引实现

什么是索引失效 在MySQL中&#xff0c;索引失效指的是查询语句无法有效地使用索引&#xff0c;而必须进行全表扫描。索引失效可能会导致查询性能下降&#xff0c;特别是在处理大量数据时。 索引失效的原因 1.索引列进行了运算或函数操作 如果对索引列进行了运算或使用了函数…

第十届电气工程、控制和机器人技术国际会议(ICRAS 2024)即将召开!

2024年第十届电气工程、控制和机器人技术国际会议&#xff08;ICRAS 2024&#xff09;将于2024年6月21日至23日在日本东京举行。本次会议由中国地质大学&#xff08;武汉&#xff09;和北京控制机器人与智能技术研究所主办。ICRAS 2024旨在聚集来自世界各地的教授、研究人员、学…

遇到大量的照片需要尺寸调整怎么办?跟着小编往下看 轻松帮你解决照片尺寸修改的烦恼

在日常的摄影后期处理中&#xff0c;我们可能会遇到需要将大量照片上传至社交媒体、制作相册、或者进行打印等需求。不同的平台或用途对照片的尺寸有不同的要求&#xff0c;因此我们需要对照片的尺寸进行调整以满足这些要求。此外&#xff0c;随着手机、相机等设备的普及&#…

开源问卷调查系统

Java Vue 开源问卷调查系统 附项目地址 Astar问卷调查系统 基于SpringBootVue前后端分离的问卷调查系统 平台简介 本项目旨在提供一个简单易用的问卷调查平台&#xff0c;帮助用户创建、分享问卷&#xff0c;并收集、分析调查数据。我们希望能够为各行各业的调查需求提供一种…

【python】python结合js逆向,让有道翻译成为你的翻译官,实现本地免费实时翻译

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者等等。 🏆《博客》:Python全栈,前后端开发,人工智能,js逆向,A…

理清大数据技术与架构

大数据并不是一个系统软件&#xff0c;更不是一个单一的软件&#xff0c;它实际上是一种技术体系、一种数据处理方法&#xff0c;甚至可以说是一个服务平台。在这个技术体系中&#xff0c;涵盖了许多不同的部件&#xff0c;比如Hadoop服务平台。这一服务平台可以根据具体情况自…

管理类联考–复试–英文面试–问题–WhatWhyHow--纯英文汇总版

文章目录 Do you have any hobbies? What are you interested in? What do you usually do in your spare time? Could you tell me something about your family&#xff1f; Could you briefly introduce your family? What is your hometown like? Please tell me so…

复旦发布层次性奖励学习框架,增强大模型人类偏好对齐

在人工智能领域&#xff0c;强化学习&#xff08;Reinforcement Learning, RL&#xff09;一直是实现智能体自主学习的关键技术之一。通过与环境的交互&#xff0c;智能体能够自我优化其行为策略&#xff0c;以获得更多的奖励。然而&#xff0c;当涉及到复杂的人类偏好时&#…

顶顶通呼叫中心中间件-机器人话术编辑器意向问题详解

文章目录 前言联系我们意向页面和分类页面的区别意向权重意向权重的计算意向权重的作用 分类规则如何分类 前言 顶顶通旗下有一款机器人话术可视化编辑工具&#xff0c;可以根据用户的需求编辑话术流程。针对该话术编辑工具的意向功能进行讲解&#xff1a; 机器人话术可视化工…

案例练习:敲桌子

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 案例描述 从1开始数到数字100&#xff0c;如果数字的个位含有7&#xff0c;或者数字是7的倍数&#xff0c;我们打印输出“敲桌子”&#xff0c;其余数字直接打印输出。 代码 #includ…

婴儿洗衣机硬核测评:希亦、鲸立、小吉婴儿洗衣机性能大比拼!

如果你非常注重婴儿衣物的卫生问题&#xff0c;那么婴儿洗衣机则是非常理想的选择。毕竟&#xff0c;在婴儿吃奶或者接触其他材料时&#xff0c;其抵抗力是比较弱的&#xff0c;再加上普通洗衣机无法对婴儿的衣物进行有效的消毒处理&#xff0c;轻则会对婴儿的健康造成威胁&…

libVLC windows开发环境搭建

1.简介 LibVLC是一个强大的开源库&#xff0c;它构成了VLC媒体播放器的核心部分。 LibVLC提供了一系列的功能接口&#xff0c;使得VLC能够处理流媒体的接入、音频和视频输出、插件管理以及线程系统等核心任务。 跨平台性&#xff1a;VLC作为一个跨平台的多媒体播放器&#x…

设计师最常用的UI设计软件

无论您的设计侧重于用户体验设计还是用户界面设计&#xff0c;您都需要一个高效的界面设计工具来帮助您完成设计项目。根据设计的不同界面功能&#xff0c;合适的 UI 界面设计工具也会有所不同。本文总结了市场上 5 款流行的界面设计软件。每个界面设计工具都有自己的优点和缺点…