华为od-C卷200分题目3 - 两个字符串间的最短路径问题

华为od-C卷200分题目3 - 两个字符串间的最短路径问题

题目描述

给定两个字符串,分别为字符串A与字符串B。

例如A字符串为ABCABBA,B字符串为CBABAC可以得到下图m*n的二维数组,定义原点为(0, 0),终点为(m, n),水平与垂直的每一条边距离为1,映射成坐标系如下图。

从原点(0, 0)到(0, A)为水平边,距离为1,从(0, A)到(A, C)为垂直边,距离为1;

假设两个字符串同一位置的两个字符相同则可以作一个斜边,如(A, C)到(B, B)最短距离为斜边,距离同样为1。

作出所有的斜边如下图,(0, 0)到(B, B)的距离为 1个水平边 + 1个垂直边 + 1个斜边 = 3。
在这里插入图片描述

根据定义可知,原点到终点的最短距离路径如下图红线标记,最短距离为:9
在这里插入图片描述

输入描述

空格分割的两个字符串A与字符串B,字符串不为“空串”,字符格式满足正则规则:[A-Z],字符串长度<10000

输出描述

原点到终点的最短距离

示例1
输入:
ABC ABC

输出:
3
示例2
输入:
ABCABBA CBABAC

输出:
9

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();String[] str = s.split(" ");int n = str[0].length();int m = str[1].length();int[][] nums = new int[n + 1][m + 1];for (int i = 1; i <= n; i++) {nums[i][0] = i;}for (int i = 1; i <= m; i++) {nums[0][i] = i;}for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {nums[i][j] = Math.min(nums[i][j - 1], nums[i - 1][j]) + 1;if (str[0].charAt(i - 1) == str[1].charAt(j - 1)) {nums[i][j] = Math.min(nums[i][j], nums[i - 1][j - 1] + 1);}}}System.out.println(nums[n][m]);}
}

思路:动态规划,当前位置的最小值取决于前一步,要么是上要么是左,如果当前字符相同则可以走斜线,左上角的位置

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

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

相关文章

五月软考满分范文“模型驱动架构设计方法及其应用”,软考高级,系统架构设计师

论文真题 模型驱动架构设计是一种用于应用系统开发的软件设计方法,以模型构造、模型转换和精化为核心,提供了一套软件设计的指导规范。在模型驱动架构环境下,通过创建出机器可读和高度抽象的模型实现对不同问题域的描述,这些模型独立于实现技术,以标准化的方式储存,利用…

Docker(九)-Docker运行redis6.0.8容器实例

1.宿主机新建目录存放redis.conf文件 目的&#xff1a;运行redis容器实例时使用自己的配置文件2.运行redis容器实例 docker run -d -p 6379:6379 --privilegedtrue -v 【宿主机配置文件目录】:/etc/redis/redis.conf -v 【宿主机数据目录】:/data --nameredis6.0.8 redis:6.0…

Elasticsearch(ES)在启动时会执行一系列检查,以确保它运行在稳定和兼容的环境中

Elasticsearch&#xff08;ES&#xff09;在启动时会执行一系列检查&#xff0c;以确保它运行在稳定和兼容的环境中。其中一项检查就是针对OpenJDK的早期访问&#xff08;Early Access&#xff09;版本。OpenJDK的Early Access版本是为即将发布的版本提供的预览版&#xff0c;它…

从挑战到实战!TDengine 新能源行业研讨会要点回顾

近年来&#xff0c;随着全球对可再生能源需求的不断增长&#xff0c;新能源行业迎来了前所未有的发展机遇。然而&#xff0c;伴随着行业的快速发展&#xff0c;海量数据的管理和高效利用成为了行业面临的重要挑战。如何通过先进的数据管理技术提升新能源系统的效率和可靠性&…

安科瑞智能物联网远传电表的优势

物联网远传智能电表是一种新型的电表&#xff0c;它通过物联网技术实现了电能的远程监测和管理。下面是物联网远传智能电表的优缺点&#xff1a;王盼盼&#xff1b;18721098782/Acrel 优点&#xff1a; 1. 实现了电能的远程监测和管理&#xff0c;可以随时随地了解电能的使用…

烟火监测报警摄像机

当今社会&#xff0c;随着城市化进程的加快和人们生活水平的提高&#xff0c;烟火监测报警摄像机作为一种新型智能安防设备&#xff0c;正逐步在各个领域得到广泛应用&#xff0c;其在保障公共安全和预防火灾中的作用日益凸显。烟火监测报警摄像机利用先进的视觉识别技术和智能…

基于FreeRTOS+STM32CubeMX+LCD1602+MCP3304(SPI接口)的8通道ADC转换器Proteus仿真

一、仿真原理图: 二、仿真效果: 三、STM32CubeMX配置: 1)、GPIO配置: 2)、SPI接口配置: 三、软件代码: 1)、GPIO初始化: static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOC_CLK_ENABL…

Markdown快速生成PPT!用这2个AI办公软件就够了!

对于喜欢使用Markdown编辑内容的人来说&#xff0c;经常会遇到诸如此类的需求&#xff1a; Markdown怎么生成PPT&#xff1f;Markdown怎么生成思维导图&#xff1f;Markdown怎么生成Word&#xff0c;或是导出为Word&#xff1f;Markdown怎么生成表格&#xff1f;…… 使用了比…

如何正确关闭偶发的安卓App闪退Bug?

对于测试遇到偶现的Bug&#xff0c;很多软件测试工程师的做法都是尽量的复现问题的步骤&#xff0c;在复现的过程&#xff0c;有的是录制视频或者打开日志&#xff0c;以便复现的时候&#xff0c;能捕捉到&#xff0c;定位问题&#xff0c;最后如果没有&#xff0c;那就先把问题…

RabbitMQ的Fanout交换机

Fanout交换机 Fanout&#xff0c;英文翻译是扇出&#xff0c;我觉得在MQ中叫广播更合适。 在广播模式下&#xff0c;消息发送流程是这样的&#xff1a; 1&#xff09; 可以有多个队列2&#xff09; 每个队列都要绑定到Exchange&#xff08;交换机&#xff09;3&#xff09; …

嵌入技术Embedding

嵌入&#xff08;Embedding&#xff09;是一种将高维数据映射到低维空间的技术&#xff0c;广泛应用于自然语言处理&#xff08;NLP&#xff09;、计算机视觉和推荐系统等领域。嵌入技术的核心思想是将复杂的数据表示为低维向量&#xff0c;使其在这个低维空间中保留尽可能多的…

Java异常处理机制包括哪些?

Java的异常处理机制是一个复杂且多层次的系统&#xff0c;旨在确保程序在遇到错误或意外情况时能够优雅地进行处理。以下是Java异常处理机制的主要组成部分&#xff1a; Java中的异常分为两大类&#xff1a;检查型异常&#xff08;checked exceptions&#xff09;和非检查型异…

嵌入式学习——硬件(ARM内核汇编指令)——day52

ARM汇编指令 学习arm汇编的主要目的是为了编写arm启动代码&#xff0c;启动代码启动以后&#xff0c;引导程序到c语言环境下运行。换句话说启动代码的目的是为了在处理器复位以后搭建c语言最基本的需求。因此启动代码的主要任务有&#xff1a; 初始化异常向量表&#xff1b;初…

GD32 GPIO引脚初始化失败问题

问题描述 使用GD32的GPIO引脚来控制 74HC595 &#xff0c;发现引脚一直无法控制&#xff0c;始终输出3.3v&#xff0c;初始化环节应该是出了问题。用通俗的话来说&#xff0c;就是点灯点不亮 排查了MCU、光耦隔离芯片、被强行上拉等问题&#xff0c;最后发现是GD的GPIO时钟使…

linux进程是什么?

进程概念 进程Process是指计算机中已运行的程序&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础。 在早期面向进程设计的计算机结构中&#xff0c;进程是程序的基本执行实体。在当代面向线程设计的计算机结构中&#xff0c;进程是线程的容器…

使用Spring Boot和Spring Data JPA进行数据库操作

使用Spring Boot和Spring Data JPA进行数据库操作 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在现代的Web应用开发中&#xff0c;数据库操作是不可或缺的一…

Spring Cloud Netflix:构建强大微服务生态系统的利器

Spring Cloud Netflix是一组集成框架&#xff0c;它将Netflix的多个开源组件整合到Spring Boot应用程序中&#xff0c;使得构建云原生应用程序变得更加简单。这些组件包括用于服务发现和注册的Eureka&#xff0c;断路器模式的实现Hystrix&#xff0c;用于API网关的Zuul&#xf…

零点到两点,我部署了一个es

一开始的准备 实在是水平有限&#xff0c;Clash虚拟机网出不去&#xff0c;研究了LAN方案&#xff0c;还在咸鱼买了一单&#xff0c;搞不定&#xff0c;没辙&#xff0c;那我老老实实下载tar包得了&#xff0c;就不docker了 下载安装 直接官网给它安个es https://www.elasti…

vue自定义事件传递数据

页面应用一个组件&#xff0c;采用自定义事件来传递参数 $emit是Vue实例的一个方法&#xff0c;它用于触发自定义事件。这些事件可以被父组件监听到&#xff0c;从而实现子组件向父组件的通信。 这种方法的好处在于&#xff0c;它可以让数据的流动保持单向&#xff0c;有助于…

web基础学习

1、安装 React 从一开始就被设计为可以被渐进地采用&#xff0c;你可以根据需要或多或少地试用 React。无论你只是想体验一下 React&#xff0c;并为 HTML 页面添加一些交互性&#xff0c;还是创建一个复杂的 React In this chapter 如何将 React 添加到 HTML 页面中 如何新建…