OJ-0830**

news2024/9/20 10:54:59

题目

在这里插入图片描述
示例1

输入:
ABC ABC
输出:
3

示例2

输入:
ABCABBA CBABAC
输出:
9

解题思路

动态规划
首先,我们可以定义一个二维数组 dp,其中 dp[i][j] 表示从字符串A的前i个字符到字符串B的前j个字符的最短距离。然后,我们可以按照以下规则更新 dp 数组:
1.如果str1[i] == str2[j],则dp[i][j] = dp[i-1][j-1],表示可以形成一个斜边。
2.否则, dp[i][j]取dp[i-1][j]、dp[i][j-1]、dp[i-1][j-1]中的最小值,分别对应水平边、垂直边和斜边。
接下来,我们可以通过逐行逐列的方式填充 dp 数组,最终 dp[m][n]就是原点到终点的最短距离。

具体思路可以总结为:
1.初始化dp[0][j]和dp[i][0] ,分别表示空串到字符串B和字符串A到空串的距离。
2.从dp[1][1] 开始,逐行逐列填充 dp 数组。
3.根据上述规则更新 dp 数组。
4. 最终输出 dp[m][n],即原点到终点的最短距离。

题解

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String strA = in.next();
        String strB = in.next();

        char[] charA = ("0" + strA).toCharArray();
        char[] charB = ("0" + strB).toCharArray();

        int m = charA.length;
        int n = charB.length;
        int[][] dp = new int[n][m];
        for (int i = 0; i < m; i++) {
            dp[0][i] = i;
        }
        for (int i = 0; i < n; i++) {
            dp[i][0] = i;
        }
        for (int i = 1; i < n; i++) {
            for (int j = 1; j < m; j++) {
                if (charA[j] == charB[i]) {
                    dp[i][j] = Math.min(Math.min(dp[i][j - 1], dp[i - 1][j]), dp[i - 1][j - 1]) + 1;
                } else {
                    dp[i][j] = Math.min(dp[i][j - 1], dp[i - 1][j]) + 1;
                }
            }
        }
        System.out.println(dp[n - 1][m - 1]);
    }
}

https://blog.csdn.net/weixin_52908342/article/details/135737063

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

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

相关文章

DDR3详解

1.DDR3简介 DDR3 SDRAM&#xff0c;全称第三代双倍速率同步动态随机存取存储器&#xff0c;简称 DDR3&#xff0c;双倍速率&#xff08;double-data-rate&#xff09;&#xff0c;是指时钟的上升沿和下降沿都发生数据传输&#xff1b;同步&#xff0c;是指DDR3数据的读取写入是…

Linux教程六:文件目录类命令ls、cd(图文详解)

默认登录出现一个[用户localhost ~] 代表时登陆用户的家目录 1、 Linux ls命令 基本用法 ls&#xff1a;列出当前目录下的文件和目录&#xff08;不包括以.开头的隐藏文件&#xff09;。ls 目录名&#xff1a;列出指定目录下的文件和目录。 常用选项 -l&#xff1a;以长格式列出…

利用开源 AI 智能名片 O2O 商城系统提升饭店私域流量

摘要&#xff1a;本文旨在探讨如何通过设计门店裂变方式&#xff0c;结合开源 AI 智能名片 O2O 商城系统&#xff0c;将私域流量转化为自然流量&#xff0c;以促进饭店业务增长。通过在餐桌上放置个人微信二维码台卡、提供福利套餐和折扣、创建饭圈社群等方式&#xff0c;吸引用…

Vue.js入门系列(十九):深入理解和应用组件自定义事件

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

python-奥运奖牌计数

题目描述 2008 年北京奥运会&#xff0c;A 国的运动员参与了 n 天的决赛项目 (1≤n≤100)。现在要统计一下 A 国所获得的金、银、铜牌数目及总奖牌数。输入第 1 行是 A 国参与决赛项目的天数 n&#xff0c;其后 n 行&#xff0c;每一行是该国某一天获得的金、银、铜牌数目&…

小程序连接MQTT服务器,以及配置,避坑

1、MQTT服务器域名配置 由于小程序必须使用域名方式连接socket&#xff0c;所以必须为MQTT服务器配置域名&#xff0c;并配置SSL证书。 1.1相关文档&#xff1a; EMQX 企业版安装 | EMQX 企业版 4.4 文档 EMQX MQTT 微信小程序接入 | EMQX 4.2 文档 MQTT 下载引入和配置连…

【图像去噪】论文精读:Multi-level Wavelet-CNN for Image Restoration(MWCNN)

请先看【专栏介绍文章】&#xff1a;【图像去噪&#xff08;Image Denoising&#xff09;】关于【图像去噪】专栏的相关说明&#xff0c;包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总&#xff08;更新中…

Spring入门之IOC(包含实例代码)

目录 什么是Spring&#xff1f;什么是Spring IOC&#xff1f;如何创建一个Spring IOC项目&#xff1f;1. 导入Maven项目依赖2. 准备一个实体类&#xff08;先定义接口再实现&#xff09;3. 准备配置文件4. 在Test类中测试 IOC中的Bean管理实例化Bean的三种方式 什么是Spring&am…

微信中如何搜索附近的人

我们 微信 下面选择 发现 然后 点卷 附件 进入后 头上的页签 切换成 附件的人 在列表中点击后即可添加附件的人啦

鸿蒙启动框架配置文件(StartUpTask)

{"startupTasks": [//有哪些任务{"name": "StartupTask_001",//任务名字"srcEntry": "./ets/startup/StartupTask_001.ets",//任务的文件路径"runOnThread": "taskpool",//运行在哪个现成&#xff0c;有…

泰克TDP1000差分探头Tektronix TDP0500参数资料

泰克Tektronix TDP0500 TDP1000 高压差分探头 ​Tektronix TDP1000 高压差分探头是一款多功能且易于使用的探头&#xff0c;可提供开关电源、CAN/LIN 总线和高速数字系统设计所需的高速电气和机械性能。Tektronix TDP1000 探头专为与 TekVPI 探头接口或 TekProbe BNC 接口配…

Java:路径计算与障碍物处理

Java 实现寻找字符串数组中的最长公共前缀及不同路径数量计算&#xff08;含障碍物&#xff09; 在计算机科学和软件开发中&#xff0c;经常需要解决一些基本但实用的问题。本文将介绍两种常见问题的解决方案&#xff1a;一是从一组字符串中找出最长公共前缀&#xff1b;二是计…

能力驱动的企业战略转型:基于能力规划的战略转型与数字化实践全指南

在当今数字化和全球化加速发展的时代&#xff0c;企业面临着复杂的市场环境和迅速变化的客户需求。为了在竞争中脱颖而出&#xff0c;企业必须不仅制定卓越的战略&#xff0c;还需确保这些战略能够有效地转化为实际行动。基于能力规划&#xff08;Capability-Based Planning, C…

Lua 代码编码规范

lua代码格式 vscode stylua 插件 配置文件stylua.toml column_width 240 line_endings “Unix” indent_type “Spaces” --使用空格 很重要&#xff0c;保证不同编辑器打开是一样的 indent_width 4 quote_style “AutoPreferDouble” --字符串引号样式双引号 call_paren…

海康二次开发学习笔记9-通讯触发及模块列表获取

通讯触发及模块列表获取 模块列表获取 获取流程中所有模块的模块名,添加下拉框用于显示模块名 1. 处理Combox2的DropDown事件 /// <summary>/// 模块列表获取/// </summary>/// <param name"sender"></param>/// <param name"e&q…

MCU官方IDE软件安装及学习教程集合 — STM32CubeIDE(STM32)

简介 各MCU厂商为保证产品的市场地位以及用户体验&#xff0c;不断的完善自己的产品配套&#xff0c;搭建自己的开发生态&#xff0c;像国外ST公司&#xff0c;国内的GD&#xff08;兆易创新&#xff09;&#xff0c;AT&#xff08;雅特力&#xff09;等等。目前就开发生态而言…

测试.net core服务项目调用dotNetify-Pulse监控性能的基本用法

微信公众号“DotNet讲堂”的文章《开源 .NET API 实时监控项目》介绍了开源实时日志及性能监控项目dotNetify-Pulse&#xff0c;在项目中引用简单&#xff0c;既能用其自带的监控页面&#xff0c;也支持按需配置监控页面。本文在之前创建的环境检测项目中添加并测试dotNetify-P…

逆向工程核心原理 Chapter20 | “内嵌补丁”练习

前言 自己学《逆向工程核心原理》一书的记录&#xff0c;只记录自己觉得重要/有用的一些点。 知识点学习 很实用的一个逆向技术。 原理&#xff1a; “壳”的逻辑也是这样的。EP处先解密OEP代码&#xff0c;再跳转到洞穴代码&#xff0c;恢复IAT之类的&#xff0c;然后跳回…

免费分享-MATLAB代码融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型

融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型 通过融合正余弦和柯西变异改进麻雀搜索算法&#xff0c;对CNN-BiLSTM的学习率、正则化参数以及BiLSTM隐含层神经元个数等进行优化 预测效果图如下 代码如下&#xff1a; %% 清空环境变量 wa…

Vue(七) TodoList案例1.0

文章目录 组件化编码流程(通用)1. 拆分静态组件2. 初始化列表展示动态数据如何让一个标签动态的拥有某一个属性 3. 按回车添加todo子组件给父组件传值之props 4. 勾选与取消勾选一个Todo5. 删除6. footer底部统计7. footer底部交互7.1 全选框自动打勾7.2 全选框取消勾选 8. 清除…