题解 | #走方格的方案数#
走方格的方案数
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 第一个参数是可迭代对象,第二个参数是对数组中每个元素执行的函数