今日刷三题(day11):不同路径的数目(一)+短距离最小路径和+把数字翻译成字符串

题目一:不同路径的数目(一)

题目描述:

一个机器人在m×n大小的地图的左上角(起点)。机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。可以有多少种不同的路径从起点走到终点?

输入输出描述:

输入:2,2                                       返回值:2

题目解析:

  • step 1:用dp[i][j]表示大小为i∗j的矩阵的路径数量,下标从0开始。
  • step 2:(初始条件) 当i或者j为0的时候,代表矩阵只有一行或者一列,因此只有一种路径。
  • step 3:(转移方程) 每个格子的路径数只会来自它左边的格子数和上边的格子数,因此状态转移为dp[i][j]=dp[i−1][j]+dp[i][j−1]。

作答情况:

属于简单题,正确。

代码:

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param m int整型 * @param n int整型 * @return int整型*/public int uniquePaths (int m, int n) {int[][] dp=new int[m][n];for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(i==0||j==0) {dp[i][j]=1;}else{dp[i][j]=dp[i][j-1]+dp[i-1][j];}}}return dp[m-1][n-1];}
}

题目二:短距离最小路径和

题目描述:

给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。

输入输出描述:

输入:[[1,3,5,9],[8,1,3,4],[5,0,6,1],[8,8,4,0]]               返回值:12

说明:

题目解析:

  • step 1:我们可以构造一个与矩阵同样大小的二维辅助数组,其中dp[i][j]表示以(i,j)位置为终点的最短路径和。
  • step2:判断特殊情况:二维数组只有一个值时,dp[0][0]=matrix[0][0]。
  • step 3:很容易知道第一行与第一列,只能分别向右或向下,没有第二种选择,因此第一行只能由其左边的累加,第一列只能由其上面的累加。
  • step4:只有一行或一列时,只能向右或向下走过来,(一行)   dp[0][j]=matrix[0][j]+dp[0][j-1];
               (一列)  dp[i][0]=matrix[i][0]+dp[i-1][0];
  • step 5:边缘状态构造好以后,遍历矩阵,补全矩阵中每个位置的dp数组值:因此状态转移公式为dp[i][j]=min(dp[i−1][j],dp[i][j−1])+matrix[i][j]。
  • step 4:最后移动到(n−1,m−1)的位置就是到右下角的最短路径和。

作答情况:

没有判断一行或一列情况下的特殊情况。

代码:

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param matrix int整型二维数组 the matrix* @return int整型*/public int minPathSum (int[][] matrix) {int m=matrix.length;int n=matrix[0].length;int[][] dp=new int[m][n];for(int i=0;i<m;i++){for(int j=0;j<n;j++){//终点即起点if(i==0&&j==0)  dp[i][j]= matrix[i][j];//只有一行else if(i==0) dp[i][j]=matrix[i][j]+dp[i][j-1];//只有一列else if(j==0) dp[i][j]=matrix[i][j]+dp[i-1][j];//多行多列下任意位置,前一个只能向下或向右来到达else  dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+matrix[i][j];}}//移动到右下角return dp[m-1][n-1];}
}

题目三:把数字翻译成字符串

题目描述:

有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。现在给一串数字,返回有多少种可能的译码结果。

输入输出描述:

输入:"12"                                      返回值:2

说明:2种可能的译码结果(”ab” 或”l”)

输入:"31717126241541717"        返回值:192

题目解析:

1.用辅助数组dp表示前i个数的译码方法有多少种。

2.数字为单数:数字非零(1种),数字为零(0种)

3.数字为多位数:

3.1 数字种存在0:数字中有10和20(两位数:1种,多位数:dp[i]=dp[i-2]种)

                             数字不是10和20(0种)

3.2  数字中没有0:数字范围为11~19  21~26 (两位数:2种,多位数:dp[i]=dp[i-2]+dp[i-1]种)

                              数字范围大于26(两位数和多位数都是dp[i]=dp[i-1])

作答情况:

数字种存在0:数字中有10和20 没有判断两位数和多位数情况。

代码:

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 解码* @param nums string字符串 数字串* @return int整型*/public int solve (String nums) {int m=nums.length();//dp[i]:到了i位置上把数字翻译成字符串的方式有几种int[] dp=new int[m];//(数字是单数)if(nums.charAt(0)!='0') dp[0]=1;else dp[0]=0;//(数字是多位数)从第二位开始遍历for(int i=1;i<dp.length;i++){//尾位置存在0if(nums.charAt(i)=='0'){//0前面是1或2开头
if(nums.charAt(i-1)=='1'||nums.charAt(i-1)=='2'){//数字是两位if(i==1) dp[i]=1; //数字是多位else  dp[i]=dp[i-2];
}
//   //0前面不是1或2开头
else{dp[i]=0;
}}//尾位置不存在0else {
if((nums.charAt(i-1)=='1'&&nums.charAt(i)<='9')||(nums.charAt(i-1)=='2'&&nums.charAt(i)<='6')){//两位if(i==1) dp[i]=2;// 多位else
dp[i]=dp[i-1]+dp[i-2];
} 
else dp[i]=dp[i-1];}}return dp[m-1];}
}

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

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

相关文章

ICME2024 | 基于半监督对比学习的表现力语音合成

人类的语音极富表现力&#xff0c;不仅包括语调和重读&#xff0c;还包括风格和情感等多种元素。表现力语音合成的目标是要精准捕捉并再现这些元素。先前表现力语音合成方面的研究通常将表现力视为单一维度&#xff0c;如风格或情感。但实际上&#xff0c;风格可以随着文本和场…

Matlab实现分段函数拟合(分段点未知)| 源码分享 | 视频教程 | 三种分段函数拟合方法

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法&#xff0c;并提供所有案例完整源码&#xff1b;2.…

Davinci工程CANTP模块讲解

配置CAN的TP模式&#xff0c;涉及BSW\CanTp\CanTp.c和CanTp.h CanTpChannels 他有两组收发&#xff0c;功能诊断和物理诊断。 功能诊断有自己的参数要求 物理诊断的接收要求相对多一些 由于发送只有一个&#xff0c;所以我们把它放在物理诊断接收那组里面。 CanTpGeneral 也…

DDD架构学习

文章目录 领域建模事件风暴四色建模法 DDD名称解析领域子域核心域通用域支撑域限界上下文战术设计实体值对象聚合和聚合根工厂资源库领域服务领域事件 DDD代码的分层名词解析实体值对象聚合根领域服务领域事件 VO&DTO&DO&PO博客 领域建模 领域驱动设计的核心在于领…

厚德提问大佬答3:让AI绘画更有效率

遇到难题不要怕&#xff01;厚德提问大佬答&#xff01; 厚德提问大佬答 你是否对AI绘画感兴趣却无从下手&#xff1f;是否有很多疑问却苦于没有大佬解答带你飞&#xff1f;从此刻开始这些问题都将迎刃而解&#xff01;你感兴趣的话题&#xff0c;厚德云替你问&#xff0c;你解…

iOS xib布局

1.多次启动发现启动图和截屏的图片不一致,设置launch storyboard 不能到顶部 https://blog.csdn.net/u011960171/article/details/104053696/ 2.multipiler是比例&#xff0c;需要控制顺序1.视图&#xff0c;2父视图&#xff0c;选择宽度比例&#xff0c;默认是1 3.Aspect R…

【Java基础】Java异常处理机制超简单的!!

程序在运行时出现的不正常情况 java把程序运行时出现的各种不正常情况提取属性和行为进行描述&#xff0c;从而出现了各种异常类&#xff0c;也就是异常被面向对象了。 异常名称、异常信息、异常发生的位置 Exception in thread "main" java.lang.ArrayIndexOutOf…

海淘美国礼品卡测评:AE/TT/香草卡与国内卡商、亚马逊测评工作室如何变现?(下)

上回分析的四种变现模式&#xff0c;相信大家已经了解清楚。 塔吉特礼品卡&#xff0c;香草礼品卡&#xff0c;AE礼品卡&#xff0c;百思买礼品卡&#xff0c;亚马逊礼品卡&#xff0c;沃尔玛礼品卡&#xff0c;丝芙兰礼品卡&#xff0c;雷蛇礼品卡&#xff0c;谷歌礼品卡&…

处理推送被拒绝的问题

处理推送被拒绝的问题 问题描述 error: failed to push some refs to hint: Updates were rejected because the remote contains work that you do not have locally. This is usually caused by another repository pushing to the same ref. You may want to first integ…

大模型入门(二)—— PEFT

PEFT&#xff08;Parameter-Efficient Fine-Tuning&#xff09;是hugging face开源的一个参数高效微调大模型的工具&#xff0c;里面集成了4中微调大模型的方法&#xff0c;可以通过微调少量参数就达到接近微调全量参数的效果&#xff0c;使得在GPU资源不足的情况下也可以微调大…

《ElementUI 基础知识》el-tree 之“我的电脑”目录结构效果

前言 项目需求&#xff0c;Web 端获取服务器文件夹目录结构。目录数据是调接口获取&#xff0c;本篇略过&#xff0c;直接展现数据&#xff01; 效果 实现 html 代码 8 - 15 行&#xff0c;自定义节点信息&#xff1b;代码 9 - 14 行&#xff0c;判断 icon 显示&#xff1b…

[沫忘录]MySQL储存对象

[沫忘录]MySQL储存对象 视图 视图本质是对原表(基表)显示上的裁剪&#xff0c;可以当作表进行操作&#xff0c;其操作的结果会直接反馈到原表上&#xff0c;即对视图的操作实质上是对原表的操作。 MySQL不仅支持为基表创建视图&#xff0c;同时也支持为视图创建视图。 基本语…

如何备份firewalld的配置信息?

要备份Firewalld的配置信息&#xff0c;您可以通过以下步骤进行&#xff1a; 备份配置文件&#xff1a; Firewalld的配置文件位于/etc/firewalld/目录下。您可以使用cp命令来备份这些文件到其他位置&#xff0c;例如&#xff1a; cp -r /etc/firewalld/zones /path/to/backup…

Bumblebee X系列用于高精度机器人应用的新型立体视觉产品

Bumblebee X是最新的GigE驱动立体成像解决方案&#xff0c;为机器人引导和拾取应用带来高精度和低延迟。 近日&#xff0c;51camera的合作伙伴Teledyne FLIR IIS推出一款用于高精度机器人应用的新型立体视觉产品Bumblebee X系列。 Bumblebee X产品图 BumblebeeX系列&#xff…

在JavaScript中获取当前页面路径的方法

在Web开发中&#xff0c;我们经常需要获取当前页面的URL路径&#xff0c;以便进行导航、数据加载或其他与页面相关的操作。JavaScript提供了几种方法来帮助我们实现这一功能。在本文中&#xff0c;我们将探讨几种常用的方法。 方法一&#xff1a;使用 window.location 对象 wi…

百度云内容审核快速配置 (java)

为什么要选择百度云 &#xff1f; 因为他免费用一年 首先要先开通百度云内容安全服务 按照操作指引走完整套 ContentCensor Java SDK目录结构** com.baidu.aip├── auth //签名相关类├── http //Http通…

IDEA 好用的插件

图标插件&#xff1a;Atom Material Icons 此插件的作用就是更好的显示各种文件的类别&#xff0c;使之一目了然 汉化包 Chinese ​(Simplified)​ Language Pack / 中文语言包 作用就是 汉化 AI编码助手 GitHub Copilot AI编码助手&#xff1a;提示代码很好用 缺点&#xff1a…

vue3在router中使用pinia报错解决

问题 在router中使用pinia&#xff08;getActivePinia was called with no active Pinia. Did you forget to install pinia&#xff09;报错解决 解决 store/index.ts import { createPinia } from piniaconst pinia createPinia() export default piniamain.ts&#xff…

使用perf查看热点函数和系统调用最大延迟函数

1、安装perf工具 1.1、ubuntu 18.04 x86下的安装 安装sudo apt install linux-source sudo apt install linux-tools-uname -r # ubuntu 18.04虚拟机实操可行 1.2、ubuntu 18.04 ARM下的安装 参考 Nvidia Jetson系列产品安装Perf ​ARM64版本的Ubuntu上安装perf 与参考文…

windows11获取笔记本电脑电池健康报告

笔记本电脑的电池关系到我们外出时使用的安全&#xff0c;如果电池健康有问题需要及时更换&#xff0c;windows系统提供了检查电池健康度的方法。 1、打开命令行 1&#xff09;键入 winR 2&#xff09;键入 cmd 打开命令行。 2、在命令行运行如下指令&#xff0c;生成电池健…