阿里2017暑期实习生招聘技术岗编程题2--java实现
来源:互联网 发布:淘宝店智能版 编辑:程序博客网 时间:2024/05/17 00:12
一、问题描述:
小张五一回家,父母给他安排了很多个相亲的姑娘,设姑娘的人数为N。
父亲负责安排约会,每次随机选择一个要相亲的对象, 母亲负责记录哪些姑娘已经约会过了。直到和所有的姑娘都约会完一遍以后,相亲才会结束。
这些天父母在吵架, 他们之间不会有任何言语沟通。所以父亲不知道那些姑娘已经约会过了。因此下次约会的对象很可能是以前已经约会过的。
请问,如果小张要把所有的姑娘都约会一遍, 那么平均需要约会多少个姑娘。
二、要求
输入:
共1行,给出N的值,正整数。输出:
共一行,即平均约会次数,保留4位小数。输入范例:
100输出范例:
512.0000
三、解决
编程语言: java
思路:
N个女孩,序号为1~N,建立一个长度为N的数组,代表女孩的约会状态,0代表未和小张约过会,1代表已和小张约过会,将数组元素的初始值设为0。
设置一个变量记录约会次数。
每次随机生成一个1~N之间的数m,代表即将和序号为m的女孩约会,然后将该女孩的约会状态由0设为1;
然后对所有女孩的状态属性进行求和操作,若和为N,说明,小张已经和所有女孩约过会了,记下此时的约会次数。对上述操作循环100次,然后根据每次循环下小张的约会次数,求取均值,即看作题目的答案。
package test;import java.awt.Point;import java.io.*;import java.util.Scanner;public class DateWithGirls { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); //用来接受控制台输入的女孩个数N int N=0; while(scanner.hasNext()){ N = scanner.nextInt(); int[] statusOfGirls= new int[N]; //设置实验次数. int times = 100; //这个数组存储每次实验记录的约会次数 int[] allCount = new int[times]; //开始实验 for(int t=0;t<times;t++){ int count = 0;//计算约会次数 int sum = 0;//对所有女孩的约会状态进行求和 //设置女孩初始约会状态为0. for(int k=0;k<m;k++){ statusOfGirls[k] = 0; } boolean isContinue = true; while(isContinue){ sum = 0; //随机生成要约会的女孩. int ss = (int)Math.floor(Math.random()*m); count+=1;//约会次数加1 //设置该女孩的约会状态为1. statusOfGirls[ss] = 1; //加总女孩的约会状态. for(int j=0;j<m;j++){ sum+=statusOfGirls[j]; } if(sum==m){ //如果所有女孩的约会状态都为1则终止循环 isContinue = false; } //System.out.println(ss); } allCount[t] = count;//将约会次数存入数组 } int totalCount=0; for(int j=0;j<times;j++){ totalCount+=allCount[j]; } double meanCount = totalCount/times; System.out.printf("%.4f",meanCount);//格式化输出. } } }
1 0
- 阿里2017暑期实习生招聘技术岗编程题2--java实现
- 2017阿里实习生招聘考试编程题
- 阿里2017实习生招聘笔试-编程题-逆波兰
- 阿里2017实习生招聘笔试-编程题-过滤
- 2017阿里实习生招聘编程题之相亲约会
- 2017阿里实习生招聘编程题之墓室
- 阿里2015实习生招聘前端方向--编程题(2)
- [笔试编程题] 腾讯2017暑期实习生编程题-java
- 奇虎360 2017暑期实习生招聘笔试编程题之跑步和剪气球
- 今日头条2017暑期实习生招聘笔试编程题之函数最宽尖峰
- 2017年暑期实习生招聘(百度)——两道编程题
- 2017阿里C/C++暑期实习生在线笔试附加题编程题之一。。
- 百度笔试2012暑期实习生招聘(java)
- 乐视2017暑期实习生笔试编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- Alexnet分类问题,程序输入不匹配
- BZOJ4827: [Hnoi2017]礼物
- DeepLearning4j实战(7):手写体数字识别GPU实现与性能比较
- java多叉树的生成和遍历
- 一种拼音分词器的JAVA实现
- 阿里2017暑期实习生招聘技术岗编程题2--java实现
- Zookeeper搭建
- thinkphp的安装与配置
- CPU卡程序设计实例(十七)命令头
- 5-2 然后是几点 (15分)
- csla 4.5使用CslaDataPortalUrl
- 12 个 CSS 高级技巧汇总
- CentOS7安装Nginx
- CPU卡程序设计实例(十八)命令体函数