题目描述:
有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。
给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。
输入:
2,2
输出:
2
我的代码:
import java.util.*;
public class Robot {
/**
* 计算一共有几种走法
* @param x 矩阵的行
* @param y 矩阵的列
* @return 返回从左上角走到右下角的走法
*/
public int countWays(int x, int y) {
// 定义矩阵
int dp[][] = new int[x][y];
// 第一行初始化
for (int i = 0; i < y; i++)
dp[0][i] = 1;
//第一列初始化
for (int i = 0; i < x; i++)
dp[i][0] = 1;
// 要从1开始
for (int i = 1; i < x; i++) {
for (int j = 1; j < y; j++) {
//等于走到上方的走法数量 + 走到左侧的走法数量之和
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
return dp[x - 1][y - 1];
}
}