蓝桥杯_day6

news/2024/5/11 3:38:03

文章目录

    • 不同路径
    • 不同路径II
    • 拿金币
    • 珠宝的最高价值

不同路径

【题目描述】
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?

【输入样例】

m=3 n=7

【输出样例】

28

【数据规模与约定】

  • 1 <= m, n <= 100
  • 题目数据保证答案小于等于 2 * 109

【解题思路】
创建一个二维的dp表,
通过题目我们可以得出,dp[i][j]的值表示的是到达当前位置一共有多少条不同的路径。
在初始化的时候,因为题目限制在走动的时候只能往右或者往下,不能回退,所以我们会发现第一行和第一列都是1,在初始化的时候可以先将第一行以及第一列都初始化为1.

【C++程序代码】
方法一:初始化一行一列

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m, vector<int>(n));dp[0][0] = 1;for (int i = 1; i < m; i++){dp[i][0] = 1;}for (int i = 1; i < n; i++){dp[0][i] = 1;}for (int i = 1; i < m; i++){for (int j = 1; j < n; j++){dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m-1][n-1];}
};

方法二:创建虚拟一行一列

class Solution {
public:int uniquePaths(int m, int n) {int row = m + 1;int line = n + 1;vector<vector<int>> dp(row, vector<int>(line));dp[0][1] = 1;for (int i = 1; i < row; i++){for (int j = 1; j < line; j++){dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m][n];}
};

不同路径II

【题目描述】
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
网格中的障碍物和空位置分别用 10 来表示。

【输入样例】

obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]

【输出样例】

2

【数据规模与约定】

  • m == obstacleGrid.length
  • n == obstacleGrid[i].length
  • 1 <= m, n <= 100
  • obstacleGrid[i][j]01

【解题思路】
创建一个二维的dp表,
通过题目我们可以得出,dp[i][j]的值表示的是到达当前位置一共有多少条不同的路径。
在初始化的时候,因为题目限制在走动的时候只能往右或者往下,不能回退,所以我们会发现第一行和第一列都是1,在初始化的时候可以先将第一行以及第一列都初始化为1.

【C++程序代码】

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int row = obstacleGrid.size() + 1;int col = obstacleGrid[0].size() + 1;vector<vector<int>> dp(row, vector<int>(col));dp[0][1] = 1;for (int i = 1; i < row; i++){for (int j = 1; j < col; j++){if (obstacleGrid[i - 1][j - 1] != 1){dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}}return dp[row - 1][col - 1];}
};

拿金币

【题目描述】
有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。请问如何走才能拿到最多的金币。

【输入格式】
第一行输入一个正整数n。
以下n行描述该方格。金币数保证是不超过1000的正整数。

【输出格式】
最多能拿金币数量。

【输入样例】

3  
1 3 3  
2 2 2  
3 1 2

【输出样例】

11

【数据规模与约定】

  • n<=1000

【解题思路】
每经过一个格子对这个位置的左侧和上面进行比较,选择大的金币数量和当前所处于的格子的金币数量进行相加。

【C++程序代码】

#include<bits/stdc++.h>
using namespace std;int main()
{int n;cin >> n;vector<vector<int>> s(n, vector<int>(n));for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){cin >> s[i][j];}}vector<vector<int>> dp(n+1, vector<int>(n+1));for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]) + s[i - 1][j - 1];}}return 0;
}

珠宝的最高价值

【题目描述】
现有一个记作二维矩阵 frame 的珠宝架,其中 frame[i][j] 为该位置珠宝的价值。拿取珠宝的规则为:

  • 只能从架子的左上角开始拿珠宝
  • 每次可以移动到右侧或下侧的相邻位置
  • 到达珠宝架子的右下角时,停止拿取
    注意:珠宝的价值都是大于 0 的。除非这个架子上没有任何珠宝,比如 frame = [[0]]

【输入样例】

frame = [[1,3,1],[1,5,1],[4,2,1]]

【输出样例】

12

【数据规模与约定】

  • 0 < frame.length <= 200
  • 0 < frame[0].length <= 200

【解题思路】
这一题基本与上题相同。
每经过一个格子对这个位置的左侧和上面进行比较,选择大的珠宝价格和当前所处于的格子的珠宝价格进行相加。

【C++程序代码】

class Solution {
public:int jewelleryValue(vector<vector<int>>& frame) {int row = frame.size();int col = frame[0].size();vector<vector<int> > dp(row + 1, vector<int>(col + 1));for (int i = 1; i <= row; i++){for (int j = 1; j <= col; j++){dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]) + frame[i - 1][j - 1];}}return dp[row][col];}
};

http://www.mrgr.cn/p/81551271

相关文章

2024/3/26 C++作业

定义一个矩形类&#xff08;Rectangle&#xff09;&#xff0c;包含私有成员&#xff1a;长(length)、宽&#xff08;width&#xff09;, 定义成员函数&#xff1a; 设置长度&#xff1a;void set_l(int l) 设置宽度&#xff1a;void set_w(int w) 获取长度&#xff1a;int…

RISC-V特权架构 - 中断定义

RISC-V特权架构 - 中断定义 1 中断类型1.1 外部中断1.2 计时器中断1.3 软件中断1.4 调试中断 2 中断屏蔽3 中断等待4 中断优先级与仲裁5 中断嵌套6 异常相关寄存器 本文属于《 RISC-V指令集基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 中断类型 RISC-V 架构定义的中…

数字孪生关键技术及体系架构

摘要&#xff1a; 数字孪生以各领域日益庞大的数据为基本要素&#xff0c;借助发展迅速的建模仿真、人工智能、虚拟现实等先进技术&#xff0c;构建物理实体在虚拟空间中的数字孪生体&#xff0c;实现对物理实体的数字化管控与优化&#xff0c;开拓了企业数字化转型的可行思路…

Codeforces Round 937 (Div. 4) A - F 题解

A. Stair, Peak, or Neither? 题解&#xff1a;直接比较输出即可。 代码&#xff1a; #include<bits/stdc.h> using namespace std ; typedef long long ll ; const int maxn 2e5 7 ; const int mod 1e9 7 ; inline ll read() {ll x 0, f 1 ;char c getchar()…

论文《Exploring to Prompt for Vision-Language Models》阅读

论文《Exploring to Prompt for Vision-Language Models》阅读 论文概况论文动机&#xff08;Intro&#xff09;MethodologyPreliminaryCoOp[CLASS]位置Context 是否跨 class 共享表示和训练 ExperimentsOverall ComparisonDomain GeneralizationContext Length (M) 和 backbon…

uni-app(使用阿里图标)

1.注册阿里矢量图标库 注册阿里图标库账号并登录&#xff0c;https://www.iconfont.cn/ 2.加入购物车 搜索适合自己的图标&#xff0c;加入购物车&#xff0c;如下图&#xff1a; 3.加入项目 我的->资源管理->我的项目->创建项目&#xff0c;然后返回购物车&#…

企微获客助手功能,行为触发如何实现回传的?

获客助手&#xff0c;这个听起来就相当酷炫的名字&#xff0c;它实际上是一个帮助企业将推广流量快速导入企业微信的神器。通过它&#xff0c;企业可以吸引越来越多的用户加为好友&#xff0c;从而建立起更紧密的客户关系。但是&#xff0c;如何进一步提升导入企业微信的流量质…

vector类(二)

文章目录 vector类的模拟实现1.默认成员变量和函数2.迭代器函数3.空间容量和长度4.[ ]下标调用5.插入操作&#xff08;尾插&#xff09;6.调整容量大小7.判空操作8.删除操作9.插入操作10.size空间大小11.消除操作 vector类的模拟实现 1.默认成员变量和函数 首先自定义构造vec…

Vite 为什么比 Webpack 快?

目录 1. Webpack 的构建原理 2. Script 的模块化&#xff08;主流浏览器对 ES Modules 的支持&#xff09; 3. Webpack vs Vite 开发模式的差异 对 ES Modules 的支持 底层语言的差异 热更新的处理 1. Webpack 的构建原理 前端之所以需要类似于 Webpack 这样的构建工具&…

C++基本语法

C是如何工作的 文章目录 C是如何工作的1、新建Hello World工程1.1使用Visual Studio新建项目1.2 HelloWorld1.2.1 命名空间1.2.2 输出输出 1.3 注释1.4 函数1.4.1 使用有返回的函数1.4.2 自定义函数 1、新建Hello World工程 1.1使用Visual Studio新建项目 按照下面的图片&…

数组---

1、数组的定义 Java中&#xff0c;数组存储固定大小的同类型元素。 数组是多个相同类型数据按一定顺序排列的集合&#xff0c;并使用一个名字命名&#xff0c;通过编号的方式对这些数据进行统一的管理。 数组的特点&#xff1a; 数组本身是引用数据类型&#xff0c;但数组中的…

计算机专业学习单片机有什么意义吗?

玩单片机跟玩计算机区别还是很大的, 单片机有众多的种类,每一种又可能有很多个系列.可以说单片机就是为了专款专用而生的.这样来达到产品成本的降低,这就是现在身边的很多的电子产品价格一降再降的原因之一.在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一…

admin端

一、创建项目 1.1 技术栈 1.2 vite 项目初始化 npm init vitelatest vue3-element-admin --template vue-ts 1.3 src 路径别名配置 Vite 配置 配置 vite.config.ts // https://vitejs.dev/config/import { UserConfig, ConfigEnv, loadEnv, defineConfig } from vite im…

Kubernetes Gateway API 介绍

Kubernetes Gateway API 诞生背景 在 kubernetes 中&#xff0c;流量的治理主要分为两个部分&#xff1a; 南北向流量东西向流量 南北向流量&#xff08;NORTH-SOUTH traffic&#xff09; 在计算机网络中&#xff0c;南北向流量通常指数据流量从一个**内部网络&#xff08;…

前后端分离开发【Yapi平台】【Swagger注解自动生成接口文档平台】

前后端分离开发 介绍开发流程Yapi&#xff08;api接口文档编写平台&#xff09;介绍 Swagger使用方式1). 导入knife4j的maven坐标2). 导入knife4j相关配置类3). 设置静态资源映射4). 在LoginCheckFilter中设置不需要处理的请求路径 查看接口文档常用注解注解介绍 当前项目中&am…

笔记本电脑死机了怎么办?

笔记本死机是常有的事&#xff0c;尤其是在玩游戏、看电影或者是使用办公软件的时候&#xff0c;电脑卡住了&#xff0c;无论你怎么按鼠标或键盘&#xff0c;显示屏始终没有反应。那么笔记本电脑死机了怎么办呢?接下来跟大家分享几个小技巧来快速解决这类死机问题&#xff0c;…

uniapp对接萤石云 实现监控播放、云台控制、截图、录像、历史映像等功能

萤石云开发平台地址&#xff1a;文档概述 萤石开放平台API文档 (ys7.com) 萤石云监控播放 首先引入萤石云js js地址&#xff1a;GitHub - Ezviz-OpenBiz/EZUIKit-JavaScript-npm: 轻应用npm版本&#xff0c;降低接入难度&#xff0c;适配自定义UI&#xff0c;适配主流框架 vi…

Ansible-1

Ansible是一款自动化运维、批量管理服务器的工具&#xff0c;批量系统配置、程序部署、运行命令等功能。基于Python开发&#xff0c;基于ssh进行管理&#xff0c;不需要在被管理端安装任何软件。Ansible在管理远程主机的时候&#xff0c;只有是通过各种模块进行操作的。 需要关…

|行业洞察·趋势报告|《2024旅游度假市场简析报告-17页》

报告的主要内容解读&#xff1a; 居民收入提高推动旅游业发展&#xff1a;报告指出&#xff0c;随着人均GDP的提升&#xff0c;居民的消费能力增强&#xff0c;旅游需求从传统的观光游向休闲、度假游转变&#xff0c;国内人均旅游消费持续增加。 政府政策促进旅游市场复苏&…

iOS - Runtime-API

文章目录 iOS - Runtime-API1. Runtime应用1.1 字典转模型1.2 替换方法实现1.3 利用关联对象给分类添加属性1.4 利用消息转发机制&#xff0c;解决方法找不到的异常问题 2. Runtime-API2.1 Runtime API01 – 类2.1.1 动态创建一个类&#xff08;参数&#xff1a;父类&#xff0…