LeetCode62. 不同路径

1、dfs:小朋友,也许你会问,这明明是dp的题,为什么总dfs呢?别问,问就是头铁,看见这种题,不过脑子,自动dfs
2、dfs的确出结果了,但是LeetCode运行结果和我的结果不一样???
在这里插入图片描述leetcode:
在这里插入图片描述???什么情况,每次老子一用dfs就出这种情况,难道dp的题不允许使用dfs了???结果明明是可以正确的呀,按理说,也不会超时。
代码:

package com.leetCode.dp;

public class leet62 {
	public static void main(String[] args) {
		System.out.println(uniquePaths(7,3));
	}
	static int ans = 0;
	public static int uniquePaths(int m, int n) {
        int[][] arr = new int[m][n];
        dfs(0,0,arr,m,n);
        return ans;
    }
	private static void dfs(int i, int j, int[][] arr,int m,int n) {
		if(i==m-1&&j==n-1)
		{
			ans++;
			return ;
		}
		if(i>=m||j>=n) return;
		dfs(i+1,j,arr,m,n);
		dfs(i,j+1,arr,m,n);
		
	}
}

3、题解思路:
(1)简单的动态规划:
dp[i][j]:从开头走到
首先是第一行和第一列,因为只能向右或向下走到达,所以只有一种选择
中间的过程,就是上面格子的值加上左边格子的值
代码:

package com.leetCode.dp;

public class leet62_t {
	public static void main(String[] args) {
		System.out.println(uniquePaths(7,3));
	}
	public static int uniquePaths(int m, int n) {
		int[][] dp = new int[m][n];
		for(int i=0;i<m;i++) dp[i][0]=1;
		for(int i=0;i<n;i++) dp[0][i]=1;
		for(int i=1;i<m;i++)
			for(int j=1;j<n;j++)
				dp[i][j]=dp[i-1][j]+dp[i][j-1];
		return dp[m-1][n-1];
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值