2016百度编程题:钓鱼比赛
题目描述
输入描述:
第一行五个整数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 10.2 0.10.1 0.4
输出例子:
equal0.20 解题看完题目,疑问的是随机选一个位置,这个用随机数生成吗?当次数比较小的时候,受这个随机数影响的,但是也就写了下来,发现运行不对,看后面讨论发现:通过求解均值来代替概率原程序
import java.util.Random; import java.text.DecimalFormat; import java.util.Scanner; 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 x = in.nextInt();int y = in.nextInt();int t = in.nextInt();double[][] A = new double[n][m];Random rand = new Random();for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){A[i][j] = in.nextDouble();}}int randX ;int randY ;double Pc = 1.0;double Ps = 1.0;while((t--)>0){Pc = Pc*(1-A[x - 1][ y-1]);randX = rand.nextInt(n);randY = rand.nextInt(m);Ps = Ps*(1-A[randX][randY]);}Pc = 1 - Pc;Ps = 1 - Ps;if(Pc-Ps>=0.01){System.out.println("cc");System.out.println(new DecimalFormat("0.00").format(Pc));}else if(Pc-Ps<=-0.01){System.out.println("ss");System.out.println(new DecimalFormat("0.00").format(Ps));}else{System.out.println("equal");System.out.println(new DecimalFormat("0.00").format(Pc));}}} }
Java Code
均值代替概率值
Java不能一个数一个数的读,不然时间通不过,一次读一行可以
import java.lang.Math; import java.text.DecimalFormat; import java.util.Scanner; public class Main{public static void main(String[] args){Scanner in = new Scanner(System.in);String[] line;double p;while(in.hasNext()){line = in.nextLine().split(" ");int n = Integer.parseInt(line[0]);int m = Integer.parseInt(line[1]);int x = Integer.parseInt(line[2]);int y = Integer.parseInt(line[3]);int t = Integer.parseInt(line[4]);double Pc = 0.0;double Ps = 0.0;for(int i = 0;i<n;i++){line = in.nextLine().split(" ");for(int j = 0;j<m;j++){p = Double.parseDouble(line[j]);Ps += p;if(i == x-1 && j == y-1){Pc = 1 - Math.pow(1-p,t);}}}Ps = Ps/(m*n);Ps = 1 - Math.pow(1-Ps,t);if(Pc-Ps>=0.01){System.out.println("cc");System.out.println(new DecimalFormat("0.00").format(Pc));}else if(Pc-Ps<=-0.01){System.out.println("ss");System.out.println(new DecimalFormat("0.00").format(Ps));}else{System.out.println("equal");System.out.println(new DecimalFormat("0.00").format(Pc));}}in.close();} }
转载于:https://www.cnblogs.com/theskulls/p/5307449.html
2016百度编程题:钓鱼比赛相关推荐
- [编程题] 钓鱼比赛
[编程题] 钓鱼比赛 ss请cc来家里钓鱼,鱼塘可划分为n*m的格子,每个格子每分钟有不同的概率钓上鱼,cc一直在坐标(x,y)的格子钓鱼,而ss每分钟随机钓一个格子.问t分钟后他们谁至少钓到一条鱼的 ...
- 京东2016校招编程题
记得有一个大题,说的是给定一个n*n的矩阵,要求从1开始填充矩阵,最后的矩阵是蛇形的.即如下: n=3, 7 8 1 6 9 2 5 4 3 n=4, 10 11 ...
- 2016蘑菇街编程题:搬圆桌
题目描述 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1).每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转.问最少需要移动几步. 输入描述: 一行 ...
- 2016京东编程题:年终奖
年终奖 题目描述 小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要 ...
- 滴滴出行2016校招编程题
1. 给定一个m*n的数组(m,n>=2,数组值>=0),要求选出和最大的子2*2数组.例如: 1 2 3 4 5 6 7 8 9 显然和最大的2*2子数组是5 6;8 9.下面完成这个功 ...
- 合唱团(2016网易编程题)
题目: 有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘 ...
- 【2020-3-29】百度编程题
1.翻硬币 题目描述 桌子上放着N枚硬币,将其从1到N编号,初始时有的正面朝上,有的反面朝上.现在要将所有硬币翻至正面朝上,每次可选择一个区间[L,R](1≤L≤R≤N),并执行以下两种操作的一种: ...
- 2016京东编程题:小东分苹果
小东分苹果 题目描述 果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重复这一过程,即先均分n份,扔 ...
- 2016蘑菇街编程题:投篮游戏
题目描述 有一个投篮游戏.球场有p个篮筐,编号为0,1...,p-1.每个篮筐下有个袋子,每个袋子最多装一个篮球.有n个篮球,每个球编号xi .规则是将数字为xi 的篮球投到xi 除p的余数为编号的袋 ...
最新文章
- 没听说过这些,就不要说你懂并发了,three。
- linux mysql互为主从_mysql互为主从配置(双主模型)
- 台式电脑键盘f1是计算机怎么取消,开机F1怎么取消,教您开机F1怎么取消
- 赞!Google 资深软件工程师 LeetCode 刷题笔记首次公开
- java登录界面命令_Java命令行界面(第16部分):JArgp
- Asp.net TextBox常规输入验证
- [Kali][VMware][2020][窗口大小][分辨率]高分辨率自适应
- kibana 后台启动
- 王者荣耀故事站小程序源码/含vue后台
- MyBatis学习总结(21)——自定义MyBatis Generator插件
- USB2.0 描述符
- 【5G核心网】 GTP协议
- C语言|控制台小游戏|打飞机(基础功能版)
- 其实也有缺点,比如一个很短的词恰恰在结尾,也会被截断
- 巧妙使用css美化网页
- 一位北大才子的光棍节情诗
- Struts1.x 登录实验-无数据库版
- CGLIB介绍与原理
- 关于esxi主机上vm无法ping通edge网关设备ip的处理
- 外汇交易与实务--外汇交易市场