代码随想录第52天

110.字符串接龙

#include<iostream>
#include<unordered_map>
#include<queue>
using namespace std;
// 定义一个类用来解决本道题
class Xxc {
private:// 用来记录可以每个字符可以改变的可能static char libs[26];
public:static int xxc(unordered_map<string, bool> &um, string s1, string s2) {queue<string> que;  // 用来广搜的队列que.push(s1);  // 将起始的字符串放进去int cnt = 1;  // 起始路径为1while (!que.empty()) {int len = que.size();for (int i = 0; i < len; ++i) {// 取出每一轮要搜索的字符串,每一轮后路径加一string cur = que.front();int len_cur = cur.size();que.pop();// 如果当前字符串与终点字符串相同,就代表找到了答案if (cur == s2) return cnt;// 两层循环的作用分别为搜索一个字符串每一个位置的字符以及每一位可能变化的可能// 因为每一个字符串每一次改变最多只能改变一位,而字符串的长度为len_cur// 所以从第0位开始,一直到len_cur都可能会是改变的目标for (int j = 0; j < len_cur; ++j) {// 里层循环代表每一位可能会做出的改变,一共有25种可能for (int k = 0; k < 26; ++k) {// 如果改变后的字符串与自身相同,没意义,则不改变if (cur[j] != libs[k]) {// 对字符串某一位做出相应地改变char temp = cur[j];cur[j] = libs[k];// 对改变后的字符串进行判断,是否之前已经得到过该字符串,// 如果得到了,则说明产生了回路,没意义,不用将其加入下一轮的队列if (um[cur]) {// 找到一个新的存在于字典中的字符串,将其加入队列que.push(cur);// 标记该字符串已经加入过,之后再遇到不用理会了um[cur] = false;}// 遍历完这一位会做出的所有符合规则的改变后,将其还原,// 然后开始下一位的改变cur[j] = temp;}}}}// 每一轮结束后,就可以将路径加一++cnt;}return 0;}
};
// 初始化每一位可能做出的改变集合
char Xxc::libs[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't','u', 'v', 'w', 'x', 'y', 'z'};
int main() {int n;cin >> n;string s1, s2;cin >> s1 >> s2;// 记录符合规则的字符串,并记录是否访问过// true表示可以到达这条路,false反之unordered_map<string, bool> um;for (int i = 0; i < n; ++i) {string temp;cin >> temp;um[temp] = true;}cout << Xxc::xxc(um, s1, s2);return 0;
}

有向图的完全可达性

import java.util.*;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int nodeNum = in.nextInt();int edgeNum = in.nextInt();int[][] graph = new int[nodeNum][nodeNum];for (int i = 0; i < edgeNum; i++) {int node1 = in.nextInt() - 1;int node2 = in.nextInt() - 1;graph[node1][node2] = 1;}boolean[] visited = new boolean[nodeNum];int count = 0;Deque<Integer> path = new ArrayDeque<>();visited[0] = true;count += 1;path.offerLast(0);while (path.size() != 0) {Integer node = path.pollFirst();for (int i = 0; i < graph[node].length; i++) {if (graph[node][i]==0) {continue;}if (visited[i]) {continue;}count += 1;visited[i] = true;path.offerLast(i);}}if (count!=visited.length) {System.out.println(-1);} else {System.out.println(1);}}
}

106.岛屿的周长

#include <iostream>
#include <vector>int main() {int n, m;int result = 0;std::cin >> n >> m;// n+2行m+2列, 四周各加一行paddingstd::vector<std::vector<int>> matrix(n + 2, std::vector<int>(m + 2, 0));// 读入for(int i = 1; i < n + 1; i++) {for(int j = 1; j < m + 1; j++) {std::cin >> matrix[i][j];}}// 遍历// 结果收集规则,当前位置是1时收集当前位置上下左右四个位置的0的个数// 对于1在边界的情况,初始化时加了padding,可以直接用相同逻辑处理不会越界访问for(int i = 1; i < n + 1; i++) {for(int j = 1; j < m + 1; j++) {if(matrix[i][j] == 1) {if(matrix[i - 1][j] == 0) result++;if(matrix[i][j - 1] == 0) result++;if(matrix[i + 1][j] == 0) result++;if(matrix[i][j + 1] == 0) result++;}}}// 输出std::cout << result << std::endl;return 0;
}

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

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

相关文章

2024年前端面试题【基本功篇】

文章目录 前言一、html 相关1.1 行内元素和块级元素分别有哪些&#xff1f;1.2 IE盒子模型和标准盒子模型 二、css 相关2.1 选择器2.2 设置垂直居中的方法2.3 定位的几种方式2.4 清除浮动的几种方式2.5 rem、em、px、vw、vh区别2.6 响应式和自适应布局的区别2.7 元素隐藏的几种…

图解HTTP-HTTP状态码

状态码 状态码的职责是当客户端向服务器端发送请求时&#xff0c;描述返回的请求结果。 类别原因短语1XXInformational(信息状态码)接收的请求正在处理2XXSuccess&#xff08;成功状态码&#xff09;请求正常处理完毕4XXRedirection &#xff08;重定向状态码&#xff09;需要…

Excel设置生日自动智能提醒,公式可直接套用!

大家好&#xff0c;我是小鱼。 今天跟大家分享一个WPS表格中根据出生日期&#xff0c;设置生日提醒&#xff0c;并且根据距离生日天数自动标记数据颜色。简单又实用&#xff0c;一个公式轻松搞定&#xff01; 接下来我们先学习一下需要使用到的函数&#xff0c;然后再根据实例让…

【MAC】深入浅出 Homebrew 下 Nginx 的安装与配置指南

硬件&#xff1a;Apple M4 Pro 16寸 系统&#xff1a; macos Sonoma 15.1.1 Nginx 是一款高性能的 Web 服务器和反向代理服务器&#xff0c;广泛应用于全球各地的网站和企业应用中。本文将详细介绍如何在 macOS 环境下使用 Homebrew 安装、启动、管理以及优化配置 Nginx&#x…

Flink执行模式(批和流)如何选择

DataStream API支持不同的运行时执行模式(batch/streaming),你可以根据自己的需求选择对应模式。 DataStream API的默认执行模式就是streaming,用于需要连续增量处理并且预计会一直保持在线的无界(数据源输入是无限的)作业。 而batch执行模式则用于有界(输入有限)作业…

安卓环境配置及打开新项目教程,2024年12月20日最新版

1.去官网下载最新的Android Studio&#xff0c;网址&#xff1a;https://developer.android.com/studio?hlzh-cn 2.下载加速器&#xff0c;注册账号&#xff0c;开启加速器。网址&#xff1a;放在文末。 3.下载安卓代码&#xff0c;项目的路径上不能有中文&#xff0c;特别是…

VMware虚拟机Ubuntu 18.04版本 磁盘扩容

一、版本配置 虚拟机版本&#xff1a;VMware WORKSTATION 16 PRO Ubuntu版本&#xff1a;Ubuntu 18.04 二、磁盘大小介绍 目的&#xff1a;磁盘扩容&#xff08;20G----->100G&#xff09;&#xff0c;从20G扩到100G 查看磁盘大小命令&#xff1a;df -h 扩容前的磁盘大小 …

面试题整理2---Nginx 性能优化全方案

面试题整理2---Nginx 性能优化全方案 1. 调整工作进程数和线程数1.1 调整工作进程数1.2 调整进程的最大连接数 2. 配置Gzip压缩2.2 配置Gzip压缩 3. 配置缓存策略3.1 配置浏览器缓存时间3.2 配置代理服务器缓存时间 4. 优化文件访问方式4.1 使用sendfile()函数发送文件数据4.2 …

10. 虚拟机VMware Workstation Pro下共享Ubuntu和Win11文件夹

本文记录当前最新版虚拟机VMware Workstation Pro&#xff08;2024.12&#xff09;如何在win11下共享文件&#xff0c;以实现Windows与Ubuntu互传文件的目的。 1. 创建共享文件夹 1.1 先关闭虚拟机的客户机&#xff0c;打开虚拟机设置 1.2 在虚拟机设置界面找到“选项”->“…

Halcon单相机+机器人=眼在手上#标定心得

首先&#xff0c;这个标定板肯定是放在我们要作业的工作台上的 目的 **1&#xff0c;得到标定物&#xff08;工作台&#xff09;与机器人底座之间的pose转换关系。2&#xff0c;得到相机与机器人末端tool的的转换关系。 两个不确定的定量 1&#xff0c;标定板与机器人底座b…

HTTP—03

触发 GET 请求 1&#xff09;直接在浏览器 地址栏 输入 URL&#xff0c;此时构成了一个GET请求 2&#xff09;HTML中的一些特殊标签可能会触发 例如 img,a,link,script... 3&#xff09;通过Form表单触发&#xff08;Form本质也是一个HTML标签&#xff09; 4&#xff0…

【Jenkins】pipeline 的基础语法以及快速构建一个 jenkinsfile

Jenkins Pipeline 是 Jenkins 中的一个强大功能&#xff0c;可以帮助你实现自动化构建、测试、部署等流程。Jenkins Pipeline 使用一种名为 Pipeline DSL&#xff08;Domain Specific Language&#xff09;的脚本语言&#xff0c;通常以 Jenkinsfile 形式存在&#xff0c;用于定…

2024年《网络安全事件应急指南》

在这个信息技术日新月异的时代&#xff0c;网络攻击手段的复杂性与日俱增&#xff0c;安全威胁层出不穷&#xff0c;给企事业单位的安全防护能力带 来了前所未有的挑战。深信服安全应急响应中心&#xff08;以下简称“应急响应中心”&#xff09;编写了《网络安全事件应急指南》…

MobaXterm 连接不上VMware 的Ubuntu 虚拟机

想在window11的笔记本上通过VMWare安装Ubuntu操作系统&#xff0c;但是在两个桌面见来回切换&#xff0c;十分的麻烦&#xff0c;于是通过远程服务访问客户端软件MateXterm来访问虚拟机的Linux系统&#xff0c;但是从CSDN上搜到的教程都没有成功&#xff0c;于是&#xff0c;尝…

MapReduce的shuffle过程详解

文章目录 MapReduce的shuffle过程详解一、引言二、Shuffle过程详解1、Map端Shuffle1.1、分区&#xff08;Partition&#xff09;1.2、排序&#xff08;Sort&#xff09;1.3、分割&#xff08;Spill&#xff09; 2、Reduce端Shuffle 三、使用示例四、总结 MapReduce的shuffle过程…

AI图像生成利器:Stable Diffusion 3.5本地运行与远程出图操作流程

文章目录 前言1. 本地部署ComfyUI2. 下载 Stable Diffusion3.5 模型3. 演示文生图4. 公网使用Stable Diffusion 3.5 大模型4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 本篇文章将介绍如何在Windows系统电脑本地部署Stable Diffusion 3.5&#xff0c;并利用cpolar…

第N7周:调用Gensim库训练Word2Vec模型

文章目录 一、准备工作1.安装Gensim库2.对原始语料分词 二、训练Word2Vec模型三、模型应用1.计算词汇相似度2.找出不匹配的词汇3.计算词汇的词频 四、总结 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、…

【容器】k8s学习笔记原理详解(十万字超详细)

Pod详解 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类&#xff1a; 用户程序所在的容器&#xff0c;数量可多可少Pause容器&#xff0c;这是每个Pod都会有的一个根容器&#xff0c;它的作用有两个&#xff1a; 可以以它为依据&am…

​ 阅读英文文献时,有哪些提高理解效率的方法?

当我们拿起一篇文献开始阅读时&#xff0c;就像是打开了一扇通往未知世界的大门。但别急着一头扎进去&#xff0c;咱们得像个侦探一样&#xff0c;带着疑问去探险。毕竟&#xff0c;知识的海洋深不可测&#xff0c;不带点“装备”怎么行&#xff1f;今天就聊聊&#xff0c;平时…

PC寄存器(Program Counter Register) jvm

在JVM&#xff08;Java虚拟机&#xff09;中&#xff0c;PC寄存器&#xff08;Program Counter Register&#xff09;扮演着至关重要的角色&#xff0c;它是JVM执行引擎的核心组成部分之一。以下是PC寄存器在JVM中的具体角色和职责&#xff1a; 指令执行指针&#xff1a; PC寄存…