114.Unique Paths-不同的路径(容易题)

本文介绍了一个经典的动态规划问题——计算机器人从网格左上角到右下角的不同路径数量。通过初始化边界条件,并利用递推公式更新中间状态,最终求得解。

不同的路径

  1. 题目

    有一个机器人的位于一个M×N个网格左上角(下图中标记为’Start’)。

    机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为’Finish’)。
    问有多少条不同的路径?

    注意事项
    n和m均不超过100

  2. 样例

    这里写图片描述

  3. 题解

DP问题
问题类似于最小路径和。

public class Solution {
    /**
     * @param n, m: positive integer (1 <= n ,m <= 100)
     * @return an integer
     */
    public int uniquePaths(int m, int n) {
        // write your code here
        int[][] a = new int[m][n];  
        for (int i = 0; i < m; i++) 
        {  
            a[i][0] = 1;  
        }  
        for (int i = 0; i < n; i++) 
        {  
            a[0][i] = 1;  
        }  
        for (int i = 1; i < m; i++)
        {  
            for (int j = 1; j < n; j++) 
            {  
                a[i][j] = a[i-1][j] + a[i][j-1];  
            }  
        }  
        return a[m-1][n-1]; 
    }
}

Last Update 2016.9.6

你问得非常好!这段路径管理代码: ```js const PATHS = { home: './algorithm-visualizer.html', snowflake: './snowflake-generator.html', fish: './fish-swarm-sim.html', plant: './plant-growth-sim.html' }; document.getElementById('homeButton').addEventListener('click', () => { window.location.href = PATHS.home; }); ``` 需要 **放在 `<script>` 标签内,并且确保 DOM 已经加载完成**,否则 `document.getElementById('homeButton')` 会返回 `null`,导致报错。 --- ### ✅ 正确插入位置:在 `</script>` 结束标签之前 推荐将这段代码 **替换原有的“返回首页”按钮事件监听**。以下是具体操作步骤。 --- ### 🔧 修改步骤(完整示例) 找到你 HTML 文件中 `<script>` 标签内的这一段旧代码(通常在文件末尾附近): ```js document.getElementById('homeButton').addEventListener('click', function () { window.location.href = 'file:///Users/wanghanyi/Desktop/自然算法/Algorithm%20Visualizer-2.html'; }); ``` ✅ **删除它**,然后用下面的新代码替代: ```js // === 路径配置对象(便于统一维护)=== const PATHS = { home: './algorithm-visualizer.html', // 首页 snowflake: './snowflake-generator.html', // 分形雪花 fish: './fish-swarm-sim.html', // 鱼群模拟 plant: './plant-growth-sim.html' // 植物生长 }; // === 按钮事件绑定 === document.getElementById('homeButton').addEventListener('click', () => { window.location.href = PATHS.home; }); // (可选)如果你还有其他按钮,比如跳转鱼群、植物等,也可以加上: // document.getElementById('boidsBtn').addEventListener('click', () => { // window.location.href = PATHS.fish; // }); // // document.getElementById('plantBtn').addEventListener('click', () => { // window.location.href = PATHS.plant; // }); ``` > 💡 提示:上面两个额外的按钮事件是假设你有 `boidsBtn` 和 `plantBtn`,如果还没有,可以先不加。 --- ### 📌 推荐放置位置(在现有脚本中的顺序) 你应该把这段代码放在: - `resetEnvironment()` 函数之后 - `updateUI()` 调用之后 - `requestAnimationFrame(animate)` 之前 ✅ 示例结构如下: ```html <script> // ...前面的所有代码(canvas、类定义、resetEnvironment 等) // 初始化 resetEnvironment(); // === 更新UI显示 === function updateUI() { // ... } ['totalAnts', 'persistence', 'timeSpeed'].forEach(id => document.getElementById(id).addEventListener('input', updateUI) ); document.getElementById('resetButton').addEventListener('click', resetEnvironment); // === ✅ 在这里插入你的 PATHS 和事件监听 === const PATHS = { home: './algorithm-visualizer.html', snowflake: './snowflake-generator.html', fish: './fish-swarm-sim.html', plant: './plant-growth-sim.html' }; document.getElementById('homeButton').addEventListener('click', () => { window.location.href = PATHS.home; }); updateUI(); // 初始化显示 // === 响应式缩放适配 === function resizeToFit() { // ... } window.addEventListener('resize', resizeToFit); resizeToFit(); setTimeout(resizeToFit, 100); // === 主动画循环 === function animate(now) { // ... } lastBirthTime = performance.now(); requestAnimationFrame(animate); </script> ``` --- ### ⚠️ 注意事项 | 问 | 解决方案 | |------|----------| | 页面跳转失败 | 确保所有目标 `.html` 文件和当前文件在同一目录下 | | 文件名含空格或中文 | 建议改名为英文短横线格式,如 `algorithm-visualizer.html` | | 浏览器阻止跳转 | 使用本地服务器运行(见下方建议) | --- ### ✅ 强烈建议:使用本地服务器运行项目 进入你的项目文件夹,在终端运行: ```bash python -m http.server 8000 ``` 然后访问: ``` http://localhost:8000 ``` 这样就能避免 `file://` 协议的各种限制,所有相对路径都能正常工作! --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值