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]