首页 > 编程语言 >华为OD笔试机试 - 园区参观路径 (Java 2024年C卷D卷真题算法)

华为OD笔试机试 - 园区参观路径 (Java 2024年C卷D卷真题算法)

时间:2024-07-29 17:59:12浏览次数:17  
标签:单元格 Java matrix 真题 int OD 路径 dp 园区

华为OD机试(C卷+D卷)2024真题目录(Java & c++ & python)

题目描述

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

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

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

输入描述

第一行为园区的长和宽;

后面每一行表示该园区是否可以参观,0表示可以参观,1表示不能参观

输出描述

输出为不同的路径数量

示例1

输入

3 3
0 0 0
0 1 0
0 0 0

输出

2

在这里插入图片描述

解题思路

经典动态规划问题。
我们定义dp[i][j]为从起始点到网格中位置(i,j)的所有可能路径的数量。我们需要找到一个递推关系,用更小的子问题的解来表达dp[i][j]。

这里的递推关系是基于这样一个事实:到达一个特定单元格的路径只能来自其左边的单元格或其上边的单元格。因此,到达该单元格的所有可能路径的数量就是到达其左边单元格的所有可能路径的数量和到达其上边单元格的所有可能路径的数量的和。这就是我们的递推关系。

具体来说,如果我们在第一行或第一列,那么只有一种可能的路径(沿着边缘)。所以,对于第一行和第一列,dp[i][j]就等于其左边单元格或上边单元格的dp值。对于其他位置,dp[i][j] = dp[i-1][j] + dp[i][j-1]。

这就是我们如何使用动态规划来解决这个问题的。我们首先初始化dp数组,然后使用上述递推关系来填充dp数组,最后dp[n-1][m-1]就是我们的答案,也就是从起始点到终点的所有可能路径的数量。

参考代码

import java.util.Scanner;

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

    int n = sc.nextInt(); // 长 -> 行数
    int m = sc.nextInt(); // 宽 -> 列数

    int[][] matrix = new int[n][m]; // 地图矩阵
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        matrix[i][j] = sc.nextInt();
      }
    }

    // 如果起点和终点不能参观,则没有路径
    if (matrix[0][0] == 1 || matrix[n - 1][m - 1] == 1) {
      System.out.println(0);
      return;
    }

    long[][] dp = new long[n][m];
    dp[0][0] = 1;

    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        if (matrix[i][j] == 1) continue;

        if (i > 0) {
          dp[i][j] += dp[i - 1][j];
        }

        if (j > 0) {
          dp[i][j] += dp[i][j - 1];
        }
      }
    }

    System.out.println(dp[n - 1][m - 1]);
  }
}

标签:单元格,Java,matrix,真题,int,OD,路径,dp,园区
From: https://blog.csdn.net/hrr397117313/article/details/140775965

相关文章

  • Java计算机毕业设计旅游购票系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,游客对于旅游体验的需求日益多样化与便捷化。传统的购票方式,如现场排队购票,不仅耗时耗力,还常常因票源紧张而影响游客的行程安排......
  • 华为OD笔试机试真题算法 - 密码解密 (Java 2024年C卷D卷)
    华为OD机试(C卷+D卷)2024真题目录(Java&c++&python)题目描述给定一段“密文”字符串s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。映射的规则(‘a’~‘i’)分别用(‘1’~‘9’)表示;(‘j’~‘z’)分别用(“10*”~“26*”)表示。约束:映射始终唯一。......
  • Java计算机毕业设计旅游网站设计(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在全球化与数字化浪潮的推动下,旅游业迎来了前所未有的发展机遇。随着人们生活水平的提高和休闲方式的多样化,旅游需求日益增长,对旅游信息的获取与预订......
  • Java计算机毕业设计酒店客房管理信息系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,酒店行业面临着前所未有的挑战与机遇。传统的酒店客房管理方式往往依赖于人工记录与操作,效率低下且易出错,难以满足现代酒店业对......
  • Java计算机毕业设计基于校园失物招领系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在繁忙的校园生活中,失物与拾物的情况时有发生,传统的失物招领方式往往依赖于公告板、微信群或口头传播,这些方式不仅效率低下,而且覆盖范围有限,导致许多......
  • 基于javaweb的家乡旅游网站的设计与实现
    摘 要随着社会经济的持续发展和人民生活水平的提高,旅游已经成为人们生活中不可或缺的重要组成部分。同时,互联网的普及,让人们对于旅游信息的获取逐渐转移到线上平台。基于javaweb的家乡旅游网站作为一个便捷的家乡旅游资讯信息的平台,为用户提供了实时且全面的家乡旅游信息,包......
  • Java计算机毕业设计农产品种植管理及溯源系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着消费者对食品安全与品质要求的日益提高,农产品种植管理及溯源系统成为了现代农业发展的重要趋势。传统农产品种植过程中,信息不对称、管理粗放、追......
  • Java计算机毕业设计科研项目经费管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着科研活动的日益增多和复杂化,科研项目经费的管理成为了科研机构管理中的重要环节。传统的手工或简单电子化管理方式已难以满足当前科研项目经费的......
  • Java计算机毕业设计考研网上辅导系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展,教育领域正经历着前所未有的变革。考研作为高等教育阶段的重要转折点,其备考过程对考生而言既漫长又充满挑战。传统的考研辅导模......
  • Java计算机毕业设计流浪猫狗救助平台(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加快,流浪猫狗问题日益凸显,成为城市管理中不可忽视的一环。这些无家可归的小生命不仅面临着生存的挑战,还可能对公共卫生和居民生活造......