题干
公司组织一次羽毛球比赛,采用淘汰机制,假设公司有1001个人,如果要评出“公司羽毛球第一高手”的称号,至少需要进行多少场比赛?请简述设计过程,并写出代码模拟比赛过程。
解答
总的来说,比较简单,每次只能淘汰一个人。
或者,2个人时需要1场,3人时需要2场......。这样更像一道智力题,而不是算法题
我用代码算出来了,具体算法看代码。
/*百度校园招聘笔试题
*二、算法设计:
* 1.公司组织一次羽毛球比赛,采用淘汰机制,假设公司有1001个人,
* 如果要评出“公司羽毛球第一高手”的称号,
* 至少需要进行多少场比赛?请简述设计过程,并写出代码模拟比赛过程。
* 我的算法思想:
* 大小为1001的数组(1表示未淘汰,0表示淘汰),
* 类似于第一个与最后一个比,第一个赢,打了一场
* 第二个与倒数第二个比,第二个赢,又打了一场
* 遇到下标相等的,则不比赛直接晋级。
* 递归,直到只有剩一个人。
*/
public class test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
test2 test2=new test2();
//看清楚了,我new了1002个(实际只有1001),是因为我不想用player[0]这个元素
int player[]=new int[100