大一C语言题目求解 50
足球世界杯的最后阶段是使用系统进行的。在这个阶段有n支队伍,他们从1到n进行编号。举行几轮比赛,在每轮比赛中剩下的队伍按照他们的ID顺序排序,然后按顺序排列第一个对战第二...
足球世界杯的最后阶段是使用系统进行的。在这个阶段有n支队伍,他们从1到n进行编号。举行几轮比赛,在每轮比赛中剩下的队伍按照他们的ID顺序排序,然后按顺序排列第一个对战第二个,第三个对战第四个,第五个对战第六个,依此类推。保证在每一轮都有偶数数量的球队。每场比赛的胜利者都会进入下一轮比赛,失败者则淘汰出局。给定队伍的ID a 和 b,问他们会在第几轮比赛相遇。
展开
3个回答
2020-11-19
展开全部
提供一个思路:
比如3号和4号比赛,如果3号赢了,那么获胜者变成下场比赛的2号。由此可知
假如给的编号是n号和m号,n<m,那么经过i次比赛,n = n/2^i,如果n为整数,那么n=n,否则n=int(n)+1,m也一样。
如果n = 1,那么n的序号不变,每次比赛完m的序号改变。
n-m == 1 且 n%2 == 1
比如3号和4号比赛,如果3号赢了,那么获胜者变成下场比赛的2号。由此可知
假如给的编号是n号和m号,n<m,那么经过i次比赛,n = n/2^i,如果n为整数,那么n=n,否则n=int(n)+1,m也一样。
如果n = 1,那么n的序号不变,每次比赛完m的序号改变。
n-m == 1 且 n%2 == 1
展开全部
int a;
int b;
int n;
int array[257] ={0};
for(int i=0;i<=n;i++)
{
array[i]=[i];
}
if(n%2!=0)
{int count =1;
while(n){
for (int j=1; j<=n/2;j=j+2)
{ if(array[j]==array[j+1]) pf(第count轮);break;
}
n = n/2;
}
if(n==0)
{pf(Final);
}
}
else {
for()
}
int b;
int n;
int array[257] ={0};
for(int i=0;i<=n;i++)
{
array[i]=[i];
}
if(n%2!=0)
{int count =1;
while(n){
for (int j=1; j<=n/2;j=j+2)
{ if(array[j]==array[j+1]) pf(第count轮);break;
}
n = n/2;
}
if(n==0)
{pf(Final);
}
}
else {
for()
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这题难不难,让我先看一集电视
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询