今日刷三题(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;谷歌礼品卡&…

大模型入门(二)—— 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;同时也支持为视图创建视图。 基本语…

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

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

百度云内容审核快速配置 (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…

使用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;生成电池健…

DI-engine强化学习入门(九)环境包裹器(Env Wrapper)

在强化学习中&#xff0c;环境&#xff08;Environment&#xff09;是智能体&#xff08;Agent&#xff09;进行学习和互动的场所&#xff0c;它定义了状态空间、动作空间以及奖励机制。Env Wrapper&#xff08;环境包装器&#xff09;提供了一种方便的机制来增强或修改原始环境…

很好的Baidu Comate,使我的编码效率飞起!

文章目录 背景及简单介绍Baidu Comate安装功能演示总结 &#x1f381;写在前面&#xff1a; 观众老爷们好呀&#xff0c;这里是前端小刘不怕牛牛频道&#xff0c;今天牛牛在论坛发现了一款便捷实用的智能编程助手&#xff0c;就是百度推出的Baidu Comate。下面是Baidu Comate评…

MT3034 算术招亲

跟MT3033新的表达式类似&#xff0c;只多了一个括号合法性的判断 #include <bits/stdc.h> using namespace std; const int N 40; bool tag[N]; bool is_op(char c) {return c || c - || c * || c / || c ^; } int priority(char op) { // 优先级排序if (op ||…

vector、heap数组、stack数组访问性能验证

测试目的 本次测试旨在比较不同数据结构&#xff08;vector、数组&#xff09;以及不同访问方法&#xff08;[]、at()、offset&#xff09;在性能上的差异&#xff0c;从而为开发者提供在特定情境下做出最佳选择的依据。 测试代码 测试网址:Quick C Benchmarks 使用GCC9.5 …