public class HelloWorld {
public int unquePaths(int m,int n) {
int [][]=new int[m][n]
int i ,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(i==0||j==0){
f[i][j]=1;
}
else{
f[i][j]=f[i-1][j]+f[i][j-1];
}
}
return f[m-1][n-1];
}
1 确定状态即最后一步为 f[i-1][j-1]
化成子问题 f[i-2][j-1], f[i-1][j-2]
2 转移方程
f[i][j]=f[i-1][j]+f[i][j-1]
3 初始条件和边界情况
初始条件 f[0][0]=1
边界情况:i=0或j=0,则前一步只能有一个方向过来 f[i][j]=1
4 计算顺序
计算第0行,计算第1行,计算第m-1行 答案是f[m-1][n-1]