【Leetcode刷题】--动态规划--Leetcode62-求网格中的唯一路径数

题目:机器人位于一个 m x n 网格的左上角, 在下图中标记为“Start” (开始)。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角,在下图中标记为“Finish”(结束)。

问有多少条不同的路径?

例如,上图是一个3 x 7网格。有多少可能的路径?

注意: m 和 n 的值均不超过 100。
 

解:从起点到m,n的路径=从起点到m,n-1的路径+从起点到m-1,n的路径;当m和n其中一个等于1时,只能走一个方向,只有一种走法。

class Solution {
public:
int uniquePaths(int m,int n)
{
	if(m<1||n<1)
		return 0;
	if(m<2||n<2)
		return 1;
//创建一个二维数组用来保存到点(i,j)路径数
	int dp[m][n];
	memset(dp,0,sizeof(dp));
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			if(i==0||j==0)
				dp[i][j]=1;
			else
				dp[i][j]=dp[i-1][j]+dp[i][j-1];
		}
	}
	return dp[m-1][n-1];
}
};
#在m*n网格中从左上角到右下角的路径数
class Solution:
	def uniquePaths(self,m,n):
		"""
		:type m:int
		:type n:int
		:rtype:int
		"""
		if(m<=0 or n<=0):
			return 0
		if( m==1 or n==1):
			return 1
			
		matrix=[[1 for j in range(n)] for i in range(m)]
		
		for i in range(1,m):
			for j in range(1,n):
				matrix[i][j]=matrix[i-1][j]+matrix[i][j-1]
		
		return matrix[-1][-1]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值