(动态规划问题)机器人走方格

来源:互联网 发布:卡巴斯基软件和nod软件 编辑:程序博客网 时间:2024/04/30 01:24

有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。

这是一道比较基础的动态规划题目,首先确定一下用什么数据结构来解决这样的一个问题,当然是二维数组了;然后我们再看,d[i][j]的位置只可能由两种可能性,一个是由d[i][j-1]向下移动过来,另一种是由d[i-1][j]向右移动得到,所以我们很容易得到这么一个式子:d[i][j]=d[i-1][j]+d[i][j-1],下面给出代码:

package fff;public class Different {public static int countWays(int x,int y){int [][] dp=new int[x][y];for(int i=0;i<x;i++){dp[i][0]=1;}for(int j=0;j<y;j++){dp[0][j]=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];//dp means possibility}}return dp[x-1][y-1];}/** * @param args */public static void main(String[] args) {System.out.println(countWays(3,3));}}


0 0
原创粉丝点击