牛客--求路径总数

📜个人简介

⭐️个人主页:摸鱼の文酱博客主页🙋‍♂️
🍑博客领域:java编程基础,mysql
🍅写作风格:干货,干货,还是tmd的干货
🌸精选专栏:【Java】【mysql】 【算法刷题笔记】
🎯博主的码云gitee,平常博主写的程序代码都在里面。
🚀支持博主:点赞👍、收藏⭐、留言💬
🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

📃求路径总数

🎯1.原题链接

走方格的方案数

🎯2.题目要求

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


  样例输入: 2 2

  样例输出: 6

🎯3.基础框架

java版本的基础框架代码如下:

数学方法,相当于一共要走(n+m)步,其中往右走要走n步,问题是在(n+m)步里哪些步是
往右走。相当于在(n+m)个中取m个有多少种组合的问题。
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
	
	}
}


🎯4.解题思路

  1.1. 对于上面的nm(33)的格子,有两种情况
  a. 如果n或者m为1,则只有一行或者一列,从左上角走到右下角的路径数为n + m
  比如: 1 * 1格子,可以先向下走,再向右走,到达右下角;或者先向右走,再向下走,到达右下角,共两条,即 1 + 1 = 2
  b. 如果n,m都大于1,那么走到[n][m]格子的右下角只有两条路径,
<1>: 从[n - 1][m]格子的右下角向下走,到达
<2>: 从[n][m - 1]格子的右下角向右走,到达
所以走到[n][m]格子的右下角的数量为[n-1][m] + [n][m - 1],可以通过递归实现,情况a为递归的终止条件

🎯5.完整代码

import java.util.*;
public class Main{
public static void main(String[] args){
	Scanner sc=new Scanner(System.in);
	//输入多组样例,所以要循环读出
	while(sc.hasNext()){
		int n=sc.nextInt();
		int m=sc.nextInt();
		System.out.println(med(m,n));
		}
	}
	public static int med(int n,int m){
	//当m==1或者n==1的时候总的路径数为m+n
	if((n==1&&m>=1)||(m==1&&n>=1)){
	return m+n;
	}
	return med(n-1,m)+med(n,m-1);
	}
}

🎯6.涉及算法&总结

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值