当前位置: 代码迷 >> Java相关 >> CSDN编程之网球赛事(求帮忙找错)
  详细解决方案

CSDN编程之网球赛事(求帮忙找错)

热度:66   发布时间:2016-04-22 20:51:19.0
CSDN编程之网球比赛(求帮忙找错)
网球比赛
题目详情:

2^n个人进行一场网球淘汰赛,假设每个人的实力不同。每个人的编号从1到2^n,编号越小表明实力越强。一般情况下,实力强的人可以战胜实力较弱的人,但是有时候实力较弱的人会超常发挥从而战胜实力比他强的人。

我们约定一个正整数m,编号为x的人可能战胜编号小于x而大于等x-m的人。例如m = 2,编号为5的人有可能战胜编号为3,4的人(但是不可能战胜编号为1的人)。比赛规则是淘汰制,即所有选手两两比赛,赢者进入下一轮,输者被淘汰。这样n轮之后,决定冠军。假设你来安排谁和谁进行比赛,请问最终冠军可能的最大编号是多少?

输入n,m (0<n<14, 0 < m < 2^n)

输出:最终冠军的最大可能编号。 

简单的想了一下,
比如8个人
n=3;
m=2;
则第一轮3号可以战胜1号
第二轮5号可以战胜3号
第三轮7号可以战胜5号。
至于具体对阵可以相应编排出来
则最大7号可以为冠军。

所以我的代码是:

public int whowin(int n,int m){
return 1+n*m;
}

代码很简单,提交还是失败。
求帮忙找错。
------解决思路----------------------
错误太多,这个结果甚至可以大于2^n。
------解决思路----------------------
不过这个逻辑你的程序中没有体现,另外就算是加上这个逻辑,也不对,你试试4 4能弄出16来么。

引用:
Quote: 引用:

错误太多,这个结果甚至可以大于2^n。

大于2^n的就是代表最后一个也可以拿冠军,这个应该不会想不到吧?

------解决思路----------------------
4 4最大编号是16,你怎么排能让最后1个人夺冠?

引用:
Quote: 引用:

不过这个逻辑你的程序中没有体现,另外就算是加上这个逻辑,也不对,你试试4 4能弄出16来么。

Quote: 引用:

Quote: 引用:

错误太多,这个结果甚至可以大于2^n。

大于2^n的就是代表最后一个也可以拿冠军,这个应该不会想不到吧?

4 4 的结果是17吧,
大约人数,也就是最后一个可以夺冠。

------解决思路----------------------
B2fLW1ePT9fySMY/uSCQyM+PFLIUH/afZEnCAMmFf9Y=B2fLW1ePT9fySMY/uSCQyM+PFLIUH/afZEnCAMmFf9Y=