黑马程序员技术交流社区

标题: 求解答,一道面试题 [打印本页]

作者: 梁昱华    时间: 2012-8-6 01:19
标题: 求解答,一道面试题
已知某培训机构本年度毕业生的人数为三百人左右,且学生就业率为83.23%。通过for循环,求出最可能的学生人数及已就业人数。假定总人数三百人左右的描述,是指人数上下波动20以内。(用枚举求){:soso_e154:}求大神帮忙
作者: 瞿乐    时间: 2012-8-6 03:11
枚举啊,一点都不懂,求枚举解释,我只能旁观了。
我稍微看了一下张老师的视频,讲到枚举,感觉听懂了,但是自己敲代码就有点都不会了。
应该是还没有理解透,希望有人能详细的回答一下啊!!!
作者: 郑枫    时间: 2012-8-6 09:21
{:soso_e115:}   还没看到那里呢。
作者: 樊占江    时间: 2012-8-6 18:59
波动20人,也就是说人数为280-320,只要枚举这40个人就行了
只要总人数/就业人数 = 83.225% 到 83.234% 之间(四舍五入),就说明这个数可能是对的
double tmp = 0.0;for (int i = 280; i <= 320; i++){int max = (int)(i * 0.85);for (int j = (int)(i * 0.8); j <= max; j++){tmp = (double)j/i;if (tmp >= 0.83225 && tmp <= 0.83234){System.out.println("总人数可能为 : " + i + ", 就业人数为 : " + j);}}}
格式弄乱了,自己去看吧



作者: 樊占江    时间: 2012-8-9 12:26
public static void main(String[] args) {
HashMap map=new HashMap();
double min=0.8323;
int[] stu=new int[2];
stu[0]=280;stu[1]=0;
double r=-1;
for(int i=280;i<=320;i++){
for(int j=1;j<=i;j++){
r=Math.abs(j*1.0/i-0.8323);
if(r<min){
min=r;
stu[0]=i;
stu[1]=j;
}
}
}

System.out.println(stu[0]);
System.out.println(stu[1]);
}

结果:316,263



作者: 冯超    时间: 2012-8-9 12:49
yun``数学问题而已




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2