暴力递归/动态javascript:void(0);规划

机器人走方格I

http://www.nowcoder.com/questionTerminal/e8bb8e68434e42acbcdff0341f2a32c5

这是一个简单的递归实现。机器人要从左上角走到右下角,每次移动一小格,则(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];
    }
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务