C# 二维代码
public class Solution {
public int UniquePaths(int m, int n) {
// 到m, n点的路径条数
int[,] dp = new int[m, n];
for (int i = 0; i < m; i++) dp[i, 0] = 1;
for (int j = 0; j < n; j++) dp[0, j] = 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];
}
}
C# 一维代码
public class Solution {
public int UniquePaths(int m, int n) {
int[] dp = new int[n];
Array.Fill(dp, 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];
// 从小到大遍历, dp[j - 1]和dp[j]都是上一层的数值,不会影响结果
// dp[i - 1, j] = dp[j], dp[i, j - 1] = dp[j - 1]
dp[j] = dp[j] + dp[j - 1];
}
}
return dp[n - 1];
}
}