1.26学习总结

连通性判断

DFS连通性判断步骤:

1.从图上任意一点u开始遍历,标记u已经走过

2.递归u的所有符合连通条件的邻居点

3.递归结束,找到了的所有与u的连通点,就是一个连通块

4.然后重复这个步骤找到所有的连通块

BFS连通性判断步骤:

1.从图上任意一点u开始遍历,入队

2.弹出队首u,并且u已经被标记过,开始搜索u的邻居点放到队列中

3.弹出队首,重复步骤寻找连通点

题:全球变暖

你有一张某海域 ���NxN 像素的照片,"."表示海洋、"#"表示陆地,如下所示:

.......

.##....

.##....

....##.

..####.

...###.

.......

其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 座岛屿。

由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。

例如上图中的海域未来会变成如下样子:

.......

.......

.......

.......

....#..

.......

.......

请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。

输入

第一行包含一个整数 N (1≤N≤1000)。

以下 �N 行 �N 列代表一张海域照片。

照片保证第 1 行、第 1 列、第 �N 行、第 �N 列的像素都是海洋。、

输出一个整数表示答案。

这道题,主要是通过找到第一个陆地,然后遍历整个岛屿,判断其中是否存在高低,如果有则这个岛屿就不会被淹没

1.DFS

#include <bits/stdc++.h>
using namespace std;
const int N=1010;
char mp[N][N];
int vis[N][N];
int flag;
void dfs(int x,int y)
{vis[x][y]=1;int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};if(mp[x][y]=='.')return;if (mp[x+1][y]=='#' && mp[x][y+1]=='#' && mp[x-1][y]=='#' && mp[x][y-1]=='#')flag=1;for (int i=0;i<4;++i){int  tx=x+dir[i][0],ty=y+dir[i][1];if (vis[tx][ty]==0 && mp[tx][ty]=='#')dfs(tx,ty);}
}
int main()
{int n;cin>>n;for (int i=0;i<n;++i){cin>>mp[i];}int ans=0;for (int i=0;i<n;++i){for (int j=0;j<n;++j){if (mp[i][j]=='#' && vis[i][j]==0){flag=0;dfs(i,j);if (flag==0)ans++;}}}cout<<ans;
}
2.BFS
#include <bits/stdc++.h>
using namespace std;
const int N=1010;
char mp[N][N],flag;
int vis[N][N];
void bfs(int x ,int y)
{queue<pair<int, int> > q;q.push({x,y});vis[x][y]=1;int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};while (q.size()){pair<int,int>p;p=q.front();q.pop();int tx=p.first,ty=p.second;if (mp[tx+1][ty]=='#' && mp[tx][ty+1]=='#' && mp[tx-1][ty]=='#' && mp[tx][ty-1]=='#')flag=1;for (int i=0;i<4;++i){int nx=tx+dir[i][0],ny=ty+dir[i][1];if (mp[nx][ny]=='#' && vis[nx][ny]==0){vis[nx][ny]=1;q.push({nx,ny});}}}
}
int main()
{int n;cin>>n;int ans=0;for (int i=0;i<n;++i)cin>>mp[i];for (int i=0;i<n;++i){for (int j=0;j<n;++j){if (vis[i][j]==0 && mp[i][j]=='#'){bfs(i,j);if (flag==0)ans++;flag=0;}}}cout<<ans;
}

判重

由于DFS和BFS都是暴力的搜索方法,所以很容易超时,所以DFS需要剪枝,BFS需要判重

题:跳蚱蜢https://www.lanqiao.cn/problems/642/learning/?page=1&first_category_id=1&problem_id=642

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

如下图所示: 有 99 只盘子,排成 11 个圆圈。 其中 88 只盘子内装着 88 只蚱蜢,有一个是空盘。 我们把这些蚱蜢顺时针编号为 11 ~ 88。

图片描述

每只蚱蜢都可以跳到相邻的空盘中, 也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。

请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列, 并且保持空盘的位置不变(也就是 1−81−8 换位,2−72−7换位,...),至少要经过多少次跳跃?

这道题,就 引入了map来记录经过的字符串,下次在变成这个串的时候就可以直接跳过

#include <bits/stdc++.h>
using namespace std;
struct node{node(){}node(string ss,int tt){s=ss,step=tt;}string s;int step;
};
int cnt=0;
queue<node>q;
map<string,bool>mp;
void solve()
{while (!q.empty()){node now=q.front();q.pop();string s=now.s;int step=now.step;if (s=="087654321"){cout<<step<<endl;cout<<cnt<<endl;break;}int i;for (i=0;i<10;++i){if (s[i]=='0')break;}for (int j=i-2;j<=i+2;++j){int k=(j+9)%9;if (k==i)continue;string news=s;char temp=news[i];news[i]=news[k];news[k]=temp;cnt++;if (!mp[news]){mp[news]=true;q.push(node(news,step+1));}}}
}
int main()
{string s="012345678";q.push(node(s,0));mp[s]=true;solve();
}

剪枝

剪格子https://www.lanqiao.cn/problems/211/learning/?page=1&first_category_id=1&problem_id=211

题目描述

如下图所示,3 x 3 的格子中填写了一些整数。

我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是 60。

本题的要求就是请你编程判定:对给定的 �×�m×n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。

如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。

如果无法分割,则输出 0。

输入描述

输入描述

程序先读入两个整数 �,�m,n 用空格分割 (�,�<10)(m,n<10),表示表格的宽度和高度。

接下来是 �n 行,每行 �m 个正整数,用空格分开。每个整数不大于 104104。

输出描述

在所有解中,包含左上角的分割区可能包含的最小的格子数目。

这道题的思路很简单,就是找到所有格子总和的一半,所以当此时相加的总和超过一半的时候,就可以直接退出,达到剪枝的效果

#include <bits/stdc++.h>
using namespace std;
int a[11][11];
int m,n,sum,minx=100005;
int vis[11][11];
void dfs(int x,int y,int s,int l)
{if (s==sum/2 ){if (minx>l && vis[0][0])minx=l;return;	}if (s>sum/2)return;int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};for (int i=0;i<4;++i){int tx=x+dir[i][0],ty=y+dir[i][1];if (vis[tx][ty]==1 || tx<0 || ty<0 || tx>=m || ty>=n)continue;vis[tx][ty]=1;dfs(tx,ty,s+a[tx][ty],l+1);vis[tx][ty]=0;}return ;
}
int main()
{cin>>m>>n;for (int i=0;i<n;++i){for(int j=0;j<m;++j){cin>>a[i][j];sum+=a[i][j];}}vis[0][0]=1;dfs(0,0,a[0][0],1);cout<<(minx==100005?0:minx);return 0;
}

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

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

相关文章

linux 查看zookeeper server运行版本号

zookeeper版本查看运行命令&#xff1a;echo stat|nc localhost 2181 显示如下图所示&#xff1a; Zookeeper version: 3.4.5-cdh6.3.2--1, built on 11/08/2019 13:15 GMT Clients: /127.0.0.1:44814[0](queued0,recved1,sent0) Latency min/avg/max: 0/0/0 Received: 9 Se…

防火墙的NAT

目录 1. NAT 概念解析 2. 配置NAT策略&#xff1a; 1. NAT 概念解析 静态NAT --- 一对一 动态NAT --- 多对多 NAPT --- 一对多的NAPT --- easy ip --- 多对多的NAPT 服务器映射 源NAT --- 基于源IP地址进行转换。我们之前接过的静态NAT&#xff0c;动态NAT&#xff0c;NAPT都属…

*【艺恩娱数】Python爬虫+数据分析可视化中国影院票房*¶

文章目录 一、记得登入才能看到所有的数据二、使用步骤艺恩数据可视化艺恩影院票房Top10艺恩影院票房销售额对比艺恩影院票房省份人次分析艺恩影院场次top10榜单 这个里面的影院名称&#xff0c;省份&#xff0c;城市&#xff0c;票房&#xff0c;场次&#xff0c;人次&#xf…

ESXI 本地和虚拟机之间可以自由复制和粘贴

文章目录 ESXI 本地和虚拟机之间可以自由复制和粘贴 ESXI 本地和虚拟机之间可以自由复制和粘贴 web访问esxi&#xff0c;然后&#xff1a; 1、右击新建的虚拟机&#xff0c;确保是在关机状态下&#xff0c;点击编辑设置 2. 找到 虚拟机选项→高级→常规→配置参数 3、点击添加…

Unity3d C#实现三维场景中图标根据相机距离动态缩放功能

前言 如题的需求&#xff0c;其实可以通过使用UI替代场景中的图标来实现&#xff0c;不过这样UI的处理稍微麻烦&#xff0c;而且需要在图标上添加粒子特效使用SpriteRender更方便快捷。这里就根据相机离图标的位置来计算图标的缩放大小即可。这样基本保持了图标的大小&#xf…

Vulnhub靶场DC-3

本机192.168.223.128 靶机192.168.223.139 目标发现nmap -sP 192.168.223.0/24 端口扫描nmap -p- 192.168.223.139 之开启了一个80端口 看一下是什么服务 nmap -sV -p- -A 192.168.223.139是一个apache服务&#xff0c;joomla模板 看一下web 没什么有用信息。 扫描一下后台…

华为HCIP Datacom H12-831 卷18

判断题 1、对于同一个MAC地址,手工配置的MAC表项优先级高于动态的表项,某二层报文的源MAC地址已经绑定在了交换机的GEO/0/1接口,当交换机从GEO/0/2收到该报文时,会丢弃该报文 A 对 B 错 正确答案 A 解析:为了提高接口安全性,网络管理员可手工在MAC地址表中加入特定M…

银行数据仓库体系实践(3)--数据架构

狭义的数据仓库数据架构用来特指数据分布&#xff0c;广义的数据仓库数据架构还包括数据模型、数据标准和数据治理。即包含相对静态部分如元数据、业务对象数据模型、主数据、共享数据&#xff0c;也包含相对动态部分如数据流转、ETL、整合、访问应用和数据全生命周期管控治理。…

在 Vue 项目中,可以通过设置不同的环境变量来区分不同的环境,例如本地开发环境、测试环境和生产环境。以下是设置环境变量的步骤:

1、在src下新建三个文件夹 &#xff08;.env.local、.env.test 和 .env.prod&#xff09; 2、配置信息 .env.local VUE_APP_ENVlocal VUE_APP_API_URLhttp://localhost:8080.env.test VUE_APP_ENVtest VUE_APP_API_URLhttp://124.220.110.203:9090/ .env.prod VUE_APP_…

Android源码设计模式解析与实战第2版笔记(一)

第一章 走向灵活软件之路 — 面向对象的六大原则 优化代码的第一步 — 单一职责原则 单一职责原则的英文名称是Single Responsibility Principle&#xff0c;缩写是SRP。 SRP&#xff1a;就一个类而言&#xff0c;应该仅有一个引起它变化的原因。 一个类中应该是一组相关性很…

Redis创建集群

主要内容 搭建redis集群 能力目标 搭建redis集群 一 应用场景 为什么需要redis集群&#xff1f; 当主备复制场景&#xff0c;无法满足主机的单点故障时&#xff0c;需要引入集群配置。 一般数据库要处理的读请求远大于写请求 &#xff0c;针对这种情况&#xff0c;我们优…

ES 分布式搜索的运行机制

ES 分布式搜索的运行机制-腾讯云开发者社区-腾讯云 ES 分布式搜索的运行机制 ES 有两种 search_type 即搜索类型&#xff1a; •query_then_fetch &#xff08;默认&#xff09;•dfs_query_then_fetch query_then_fetch query_then_fetch 1.用户发起搜索&#xff0c;请求…

Python的hashlib模块:7种加密算法深入剖析

目录 一、引言 二、哈希算法简介 三、hashlib模块中的加密算法 MD5 SHA1 SHA224/SHA256/SHA384/SHA512 SHA3 其他算法&#xff1a; 四、加密算法比较与选择 五、实际应用与注意事项 六、总结 本文将深入探讨Python的hashlib模块&#xff0c;重点解析其中的七种加密算…

【GitHub项目推荐--GitHub 上的高仿项目】【转载】

整理了现在比较热门 App 的高仿项目&#xff0c;这些项目都是有「recently updated」&#xff0c;而不是年代久远不再维护的项目。包括高仿微信、微博、B站、斗鱼、抖音、美团、头条、掘金等等。 这些项目涉及的技术栈有 Vue、Flutter 等等&#xff0c;看这些高仿项目的源码有…

element-ui 树形控件 实现点击某个节点获取本身节点和底下所有的子节点数据

1、需求&#xff1a;点击树形控件中的某个节点&#xff0c;需要拿到它本身和底下所有的子节点的id 1、树形控件代码 <el-tree:data"deptOptions"node-click"getVisitCheckedNodes"ref"target_tree_Speech"node-key"id":default-ex…

Discuz论坛搭建:Linux宝塔面板一键部署,固定地址畅享公网访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装基础环境二. 一键部署Discuz三. 安装cpolar工具四. 配置域名访问Discuz…

vue3 根据点击位置,实现一个用户头像弹框定位

vue3 根据点击位置&#xff0c;实现一个用户头像弹框定位 需求背景 最近在做直播后台&#xff0c;涉及到对用户的一些操作&#xff0c;比如关注/取关/禁言/踢出直播间。多个地方都要用&#xff0c;需要封装一个弹框组件 效果图 实现过程分析 根据点击元素&#xff0c;获取元…

HTML - 介绍

一.简介 HTML&#xff0c;超文本标记语言&#xff08;HyperText Markup Language&#xff09;&#xff0c;是一种用于创建网页的标准标记语言。我们可以使用HTML建立自己的WEB网站或特定页面。HTML运行在浏览器上&#xff0c;由浏览器解析。 ⚠️注意&#xff1a;HTML文件的后缀…

node学习过程中的终端命令

冷的哥们手真tm冷&#xff0c;打字都是僵的&#xff0c;屮 目录 一、在学习nodejs过程中用到的终端命令总结 一、在学习nodejs过程中用到的终端命令 node -v nvm install 20.11.0 nvm list nvm list available nvm on nvm -v nvm use 20.11.0 node加要运行的js文件路径 ps&a…

燃烧的指针(二)

&#x1f308;个人主页&#xff1a;小田爱学编程 &#x1f525; 系列专栏&#xff1a;c语言从基础到进阶 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于c语言的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到小田代码世界~ &#x…