#62不同路径medium

code1:用动态规划 Dynamic Programming 来解,可以维护一个二维数组 dp,其中 dp[i][j] 表示到当前位置不同的走法的个数,然后可以得到状态转移方程为:  dp[i][j] = dp[i - 1][j] + dp[i][j - 1],这里为了节省空间,使用一维数组 dp,一行一行的刷新也可以

class Solution {
    public int uniquePaths(int m, int n) {
        int[] dp=new int[n];
        for(int i=0;i<n;i++)
            dp[i]=1;
        for(int i=1;i<m ;++i)
            for(int j=1;j<n;j++)
                dp[j] +=dp[j-1];
        return dp[n-1];
    }
}

code2:采用i递归的思想,但是时间超时

class Solution {
    public int uniquePaths(int m, int n) {
        return helper(1,1,m,n);
    }
    public int helper(int row,int col,int m,int n){
        if(row==m && col==n)
            return 1;
        if(row > m || col>n)
            return 0;
        return helper(row+1,col,m,n)+helper(row,col+1,m,n);
    }
}

code3:数学方法,组合问题,机器人总共走m+n-2步,其中m-1步往下走,n-1步往右走,本质上就是一个组合问题,也就是从m+n-2个不同元素中每次取出m-1个元素的组合数。根据组合的计算公式

注意:dom和dedom如果不是double,而是用int,那么会很容易越界,因为这是一个阶乘,所以大家在面试中讨论这种方法要注意和提及越界的问题。

public int uniquePaths(int m, int n) {
    double dom = 1;
    double dedom = 1;
    int small = m<n? m-1:n-1;
    int big = m<n? n-1:m-1;
    for(int i=1;i<=small;i++)
    {
        dedom *= i;
        dom *= small+big+1-i;
    }
    return (int)(dom/dedom);
}

参考博客:https://blog.csdn.net/linhuanmars/article/details/22126357

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
相对路径是指相对于当前的工作文件夹路径,用来定位文件的位置。绝对路径是一个文件的完整路径,可以根据这个路径的层级关系准确地找到该文件。在Python中,可以使用相对路径或绝对路径来读取文件。 使用相对路径读取文件的示例代码如下: ``` import os print(os.getcwd()) # 工作文件夹路径【即相对路径位置】 with open(r'.\Data.txt', 'r', encoding='utf8') as f: file = f.read() print(file) ``` 使用绝对路径读取文件的示例代码如下: ``` import os print(os.getcwd()) # 工作文件夹路径,即绝对路径位置 with open(r'G:\3 Data Process\4 CMIP6 GCMs\0 Python Code\Data.txt', 'r', encoding='utf8') as f: file = f.read() print(file) ``` 要确定当前的相对路径(即工作文件夹路径),可以使用以下代码: ``` import os print(os.getcwd()) # 工作文件夹路径【即相对路径位置】 ``` 通过使用相对路径或绝对路径,可以在Python中准确地读取文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python基础知识:绝对/相对路径等](https://blog.csdn.net/qq_44246618/article/details/130314135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [python的绝对路径和相对路径](https://blog.csdn.net/weixin_42830697/article/details/120015478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值