华为OD机试 2024E卷题库疯狂收录中,刷题 <a rel="nofollow" href="https://blog.csdn.net/qq_40374604/category_12822407.html" style="color: red;">点这里</a>。

实战项目访问:http://javapub.net.cn/

专栏导读

本专栏收录于 《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》

刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。


走方格的方案数

请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。 注:沿棋盘格之间的边缘线行走

数据范围:1≤n,m≤8

在这里插入图片描述

输入描述:

输入两个正整数n和m,用空格隔开。

输出描述:

输出一行结果

示例1

输入

2 2

输出

6

Java 编程

package cn.net.javapub.demo2.demo;

/**
 * @author: shiyuwang
 * @url: http://javapub.net.cn
 */

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));
        String line = null;
        while ((line = bReader.readLine()) != null) {
            int n = Integer.valueOf(line.substring(0, line.indexOf(" ")));
            int m = Integer.valueOf(line.substring(line.indexOf(" ") + 1));
            System.out.println(getCount(n, m));
        }
    }

    public static int getCount(int n, int m) {
        int[][] dp = new int[n + 1][m + 1];
        for (int i = 0; i < n + 1; i++) {
            for (int j = 0; j < m + 1; j++) {
                if (i == 0 || j == 0) {
                    // 边上的每一个点的可能性都是1,因为走到边上,就只能顺着边往下走了,可能性只能是1
                    dp[i][j] = 1;
                } else {
                    // 往后每一个点,都是后面两个点的可能性之和,因为它可以选择任意一个点来走,可能性就是下两个点的可能性相加
                    dp[i][j] = dp[i][j - 1] + dp[i - 1][j];
                }
            }
        }
        // 最终加到最后一个点,可能性就是所有的路线数量
        return dp[n][m];
    }

}

展示效果:

在这里插入图片描述

🏆下一篇: 华为OD机试 - 24点运算 (Java 2024 E卷 100分) 🏆本文收录于, 搬砖工逆袭Java架构师

刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

优质合集推荐

《突击面试》Java面试题合集
《面试1v1》
《编程工作总结》