题解 | #蘑菇阵#

蘑菇阵

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


// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) { // 
            int n = in.nextInt();
            int m = in.nextInt();
            int k = in.nextInt();
            //创建草地
            int[][] glass = new int[n+1][m+1];
            //将蘑菇种到草地上
            for(int i = 0; i < k; i++) {
                int x = in.nextInt();
                int y = in.nextInt();
                glass[x][y] = 1;
            }           
            //A在(1,1)开始 多加一行,一列
            //设置A到B概率
            double[][] prob = new double[n+1][m+1];
            prob[1][1] = 1.0;
            for(int i = 1; i <= n; i++) {
                for(int j = 1; j <= m; j++) {
                    if(!(i == 1 && j == 1)) {
                     //只会走(i,j+1)或(i+1,j)只往右边走,或下面走
                     //当前的的概率 = 左边走过来的 0.5+ 上边走过来的 0.5
                     //在边界上,则只有一种选择 1.0
                        prob[i][j] = prob[i-1][j] * (j==m?1.0:0.5) + 
                        prob[i][j-1] * (i == n?1.0:0.5);
                    }
                    //在蘑菇上的概率 0.0
                    if(glass[i][j] == 1) {
                        prob[i][j] = 0.0;
                    }
                }

            }
            System.out.printf("%.2f\n",prob[n][m]);
        }
    }
}
全部评论

相关推荐

07-31 14:17
门头沟学院 Java
牛客39712426...:那他今年招集贸呢,26届本科大部分不就是属猴,除非写明招25的或者研究生
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-30 11:34
真的很糟糕:黑奴听了都流泪啊
点赞 评论 收藏
分享
07-23 15:05
门头沟学院 Java
熊大不大:不好意思KPI数据刚刚刷新,刚刚达标
点赞 评论 收藏
分享
08-01 14:15
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务