这是一个简单的递归实现。机器人要从左上角走到右下角,每次移动一小格,则(x-1)或者(y-1),当x==1||y==1 机器人只能向下或向右,因此return 1.
递归实现
public static int countWays(int x, int y) { // write code here //捣乱参数,直接返回 if(x < 0 ||y < 0 || x+y>12 ) return 0; //递归chuk if(x==1 || y==1 ) return 1; return countWays(x-1,y)+countWays(x,y-1); }
动态规划
public static int countDp(int x, int y){ int dp[][]=new int[x+1][y+1]; for(int i=1;i<=x;i++){ dp[i][1]=1; } for(int i=1;i<dp[0].length;i++){ dp[1][i]=1; } for(int i=2;i<=x;i++){ for(int j=2;j<=y;j++){ dp[i][j]=dp[i-1][j]+dp[i][j-1]; } } for(int i=0;i<=x;i++){ for(int j=0;j<=y;j++){ System.out.print(dp[i][j]+" "); } System.out.println(); } return dp[x][y]; }