动态规划求解路径总数
问题描述:

方法:动态规划
状态:
从(0,0)到达(1,0),(1,1),(2,1),…(m-1,n-1)的路径数
F(i,j): 从(0,0)到达F(i,j)的路径数
状态递推: F(i,j) = F(i-1,j) + F(i,j-1)
初始化:
特殊情况:第0行和第0列 F(0,i) = 1 F(i,0) = 1
返回结果: F(m-1,n-1)
代码:
import java.util.*;
public class Solution {
/**
*
* @param m int整型
* @param n int整型
* @return int整型
*/
public int uniquePaths (int m, int n) {
// write code here
int[][] pathNum=new int[m][n];
//F(i,0) F(0,j)=1
for(int i=0;i<m;i++)
pathNum[i][0]=1;
for(int j=0;j<n;j++)
pathNum[0][j]=1;
for(int i=1;i<m;i++){
for(int j=1;j<n;j++)
pathNum[i][j]=pathNum[i][j-1]+pathNum[i-1][j];
}
return pathNum[m-1][n-1];
}
}
运行结果:

该博客介绍了一种使用动态规划方法来计算从起点(0,0)到达网格右下角(m-1,n-1)的唯一路径数量。通过初始化第一行和第一列的路径数为1,然后根据状态转移方程F(i,j)=F(i-1,j)+F(i,j-1)填充矩阵,最终得到目标位置的路径数。提供的Java代码实现了这一算法并返回了结果。
646

被折叠的 条评论
为什么被折叠?



