首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

面试中常问到的称小球有关问题

2013-09-07 
面试中常问到的称小球问题有9个小球,大小和形状完全相同,其中有一个球比其他球重,提供一个天平,问:为了保

面试中常问到的称小球问题

有9个小球,大小和形状完全相同,其中有一个球比其他球重,提供一个天平,问:为了保证能把较重的那个球找出来,至少需要称量几次?

相信大家可能都遇到过这种问题,常作为面试时的智商题进行考察。现对此问题进行研究,用程序展现出了计算该问题的方法,如下:

public class TestWeightingBalls {private static int count = 0;public static void main(String[] args) {int num = 9;//小球的个数System.out.println(getWeightCount(num));//输出3}/** * 输入小球数目,返回需要称量的次数 * @param ballNum * @return */private static int getWeightCount(int ballNum){//进行一次分组(分为3份,其中至少有2整份)ballNum = getBallNumByGrouping(ballNum);//将前两整份放置在天平的两段进行一次称量,确定目标球在三份中的哪一份count++;//如果每组的小球数目>1,即还未称出来,那么继续进行分组和称量if(ballNum>1){return getWeightCount(ballNum);}return count;}/** * 获取称量时要在天平的每端放置的小球数目,比如有9个球,需要在天平的每端放置3个球 * @param num * @return */private static int getBallNumByGrouping(int num){double number = Double.valueOf(num);//将除法运算结果向上取整return (int)Math.ceil(number/3);}}


 

热点排行