一、不同路径
- 一个机器人位于一个 m * n网格的左上角,机器人每次只能向下或者向右移动一步,机器人试图达到网格的右下角,问总共有多少种不同的路径
二、题目分析
比如一个3 * 7的网格
只能向下或向右走,那最上面和最左边必然都是1
中间的只能由左边或上边的方式相加,可得到dp表达式dp[i][j] = dp[i-1][j] + dp[i][j-1]
三、代码实现
package OneDaySuanFa;
public class diffentPath {
public static int diffentpath(int m,int n){
int[][] dp = new int[m][n];
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++){
if (i == 0 && j != 0){
dp[i][j] = 1;
}else if(i != 0 && j == 0){
dp[i][j] = 1;
}else if (i != 0 && j != 0) {
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
}
return dp[m-1][n-1];
}
public static void main(String[] args) {
System.out.println(diffentpath(3,7));
System.out.println(diffentpath(3,3));
System.out.println(diffentpath(3,2));
}
}