钓鱼比赛-百度笔试

题目:ss请cc来家里钓鱼,鱼塘可划分为n*m的格子,每个格子每分钟有不同的概率钓上鱼,cc一直在坐标(x,y)的格子钓鱼,而ss每分钟随机钓一个格子。问t分钟后他们谁至少钓到一条鱼的概率大?为多少?
输入描述:第一行五个整数n,m,x,y,t(1≤n,m,t≤1000,1≤x≤n,1≤y≤m);
接下来为一个n*m的矩阵,每行m个一位小数,共n行,第i行第j个数代表坐标为(i,j)的格子钓到鱼的概率为p(0≤p≤1)
输出描述:输出两行。第一行为概率大的人的名字(cc/ss/equal),第二行为这个概率(保留2位小数)
输入例子:
2 2 1 1 1
0.2 0.1
0.1 0.4
输出:
equal
0.20

思路:这个题首先我们需要找出cc的掉到 鱼的概率为p1,ss掉到鱼的概率为p2,p2在这里不需要真正的去取随机数,p2在这里是只需要取平均概率就行了。然后我们计算出在t分钟内没掉到鱼的概率,然后1减去该概率就可以求得t分钟内掉到鱼的概率。

java代码如下:

import java.text.DecimalFormat;
import java.util.Scanner;

/**
 * ss请cc来家里钓鱼,鱼塘可划分为n*m的格子,每个格子每分钟有不同的概率钓上鱼,cc一直在坐标(x,y)的格子钓鱼,
 * 而ss每分钟随机钓一个格子。问t分钟后他们谁至少钓到一条鱼的概率大?为多少?
 *
 * 第一行五个整数n,m,x,y,t(1≤n,m,t≤1000,1≤x≤n,1≤y≤m);
 接下来为一个n*m的矩阵,每行m个一位小数,共n行,第i行第j个数代表坐标为(i,j)的格子钓到鱼的概率为p(0≤p≤1)

 输入例子:
 2 2 1 1 1
 0.2 0.1
 0.1 0.4
 * Created by lizhaoz on 2016/4/14.
 */

public class Gofish {


    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while (in.hasNext()){
            int n=in.nextInt();
            int m=in.nextInt();
            int x=in.nextInt();
            int y=in.nextInt();
            int t=in.nextInt();
            int[][] d=new int[n][m];
            double p1=0;
            double p2=0;
            for (int i = 0; i <n; i++) {
                for (int j = 0; j <m ; j++) {
                    double tmp=in.nextDouble();
                    p2+=tmp;
                    if (i==x-1&&j==y-1){
                        p1=tmp;
                    }
                }
            }
            p1=1-Math.pow(1-p1,t);
            p2=1-Math.pow(1-p2/(m*n),t);
            if (p1-p2>=0.01){
                System.out.println("cc");
                System.out.println(new DecimalFormat("0.00").format(p1));
            }else if (p2-p1<=-0.01){
                System.out.println("ss");
                System.out.println(new DecimalFormat("0.00").format(p2));
            }else {
                System.out.println("equals");
                System.out.println(new DecimalFormat("0.00").format(p1));
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值