题解 | #走方格的方案数#

走方格的方案数

https://www.nowcoder.com/practice/e2a22f0305eb4f2f9846e7d644dba09b

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        let [m, n] = line.split(" ").map(Number);
        let dp = Array.from(Array(m + 1).fill(0), () =>
            new Array(n + 1).fill(1)
        );
        for (let i = 1; i <= m; i++) {
            for (let j = 1; j <= n; j++) {
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
            }
        }
        console.log(dp[m][n]);
    }
})();

动态规划的解法:初始值为1:状态转移方程为 dp[i][j] = dp[i - 1][j] + dp[i][j - 1];

m和n使用split的方法转化为数组后,必须使用Number方法使其变成数组 let [m, n] = line.split(" ").map(Number);

创建m+1行,n+1列 多维数组的方法

Array.from(Array(m+1)),()=>new Array(n+1).fill(1)); 或者 Array(m+1).fill(0).map(() => new Array(n+1).fill(1));

fill(1)使用1填充整个数组

Array.from 第一个参数是可迭代对象,第二个参数是对数组中每个元素执行的函数

全部评论

相关推荐

点赞 评论 收藏
分享
09-26 19:45
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务