动态规划求解路径总数
问题描述:
方法:动态规划
状态:
从(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];
}
}
运行结果: