园区参观路径 - 华为OD统一考试

2024-01-20 18:04

本文主要是介绍园区参观路径 - 华为OD统一考试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OD统一考试(C卷)

分值: 100分

题解: Java / Python / C++

alt

题目描述

园区某部门举办了Family Day,邀请员工及其家属参加;

将公司园区视为一个矩形,起始园区设置在左上角,终点园区设置在右下角;

家属参观园区时,只能向右和向下园区前进,求从起始园区到终点园区会有多少条。

image-20240120142142242

输入描述

输入第一行为园区的长和宽;

接下来每一行表示该园区是否可以参观,0表示可以参观,1表示不可以参观。

输出描述

输出为不同路径的数量

示例1

输入:
3 3
0 0 0
0 1 0
0 0 0输出:
2

题解

经典的动态规划问题。

1、状态定义:
dp[i][j] 表示走到格子 (i,j) 的方法数。

2、状态转移:

  • 如果网格 (i,j) 上有障碍物,则 dp[i][j] 值为 0,表示走到该格子的方法数为 0;
  • 否则网格 (i,j) 可以从网格 (i−1,j) 或者 网格 (i,j−1) 走过来,因此走到该格子的方法数为走到网格 (i−1,j) 和网格 (i,j−1) 的方法数之和,即 dp[i,j]=dp[i−1,j]+dp[i,j−1]。

Java

import java.util.Scanner;
/*** @author code5bug*/
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取输入int l = scanner.nextInt(), w = scanner.nextInt();int[][] garden = new int[l][w];for (int i = 0; i < l; i++) {for (int j = 0; j < w; j++) {garden[i][j] = scanner.nextInt();}}// 初始化动态规划数组int[][] dp = new int[l + 1][w + 1];dp[0][1] = 1;// 动态规划计算for (int r = 0; r < l; r++) {for (int c = 0; c < w; c++) {if (garden[r][c] == 1) {dp[r + 1][c + 1] = 0;} else {dp[r + 1][c + 1] = dp[r][c + 1] + dp[r + 1][c];}}}// 输出结果System.out.println(dp[l][w]);}
}

Python

l, w = map(int, input().split())
garden = [list(map(int, input().split())) for _ in range(l)]dp = [[0] * (w + 1) for _ in range(l + 1)]
dp[0][1] = 1for r in range(l):for c in range(w):if garden[r][c] == 1:dp[r+1][c+1] = 0else:dp[r+1][c+1] = dp[r][c+1] + dp[r+1][c]print(dp[l][w])

C++

#include <iostream>
#include <vector>using namespace std;int main() {// 读取输入int l, w;cin >> l >> w;vector<vector<int>> garden(l, vector<int>(w));for (int i = 0; i < l; i++) {for (int j = 0; j < w; j++) {cin >> garden[i][j];}}// 初始化动态规划数组vector<vector<int>> dp(l + 1, vector<int>(w + 1, 0));dp[0][1] = 1;// 动态规划计算for (int r = 0; r < l; r++) {for (int c = 0; c < w; c++) {if (garden[r][c] == 1) {dp[r + 1][c + 1] = 0;} else {dp[r + 1][c + 1] = dp[r][c + 1] + dp[r + 1][c];}}}// 输出结果cout << dp[l][w] << endl;return 0;
}

相关练习题

题号题目难易
LeetCode LCR 098LCR 098. 不同路径中等
LeetCode 6363. 不同路径 II中等

‍❤️‍华为OD机试面试交流群每日真题分享): 加V时备注“华为od加群”

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

这篇关于园区参观路径 - 华为OD统一考试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/626850

相关文章

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件