- 10
- 0
- 约1.77千字
- 约 2页
- 2024-01-24 发布于湖北
- 举报
【题01】比赛安排
有n(n为偶数)个球队要进行友谊赛,要求每一队必须和所有其它队交锋一次。在安排赛事时为了照顾参赛队的休息,一天赛事中同一球队不允许进行两场比赛。问要在最短天数内安排完比赛,该如何设计程序。输入:
n
输出:
最短天数k
以下k行为每天交锋的两队序号
题解
n
我们每天设2场次,让每个队出场一次,显然,为了使每个队与其余队交锋一次,比赛天数定为n-1。
n
这样的安排即不违反规则,又能在最短时间内安排完比赛。例如n=4时,每天有2=2场,共进行n-1=3
天比赛:
第一天
1队与2队
3队与4队
第二天
1队与3队
2队与4队
第三天
1队与4队
2队与3队
设第i天的比赛为x队对奕y队。由于任何数除以n-1的余数有n-1个(0,1,…,n-2),与比赛天数相同,因此x、y与可以呈如下对应关系:
(x+y)mod(n-1)=i
表明第i+1天的一场比赛为x:y或者y:x。
我们不妨依次枚举第i+1天交锋的一支球队x为1,…,n。若x球队的序号一旦确定,则与之交锋的球队y按下式计算:
y=((n-1)+i-x)mod(n-1)
上述模数方程得出的y值与第i+1天参赛的y队序号比较,不仅多一个0,缺少n-1和n两个数,而且还可能出现x队相同的序号。为了使得模数方程得出的y值与y队的序号对应,我们不妨假设:
若y=0,则设定y=n-1;
若x=y,则设定y=n或者x=n,使得对垒阵局为n:x或者x:n。例如n=4时,同余关系如表9.1.1所示:
y
x
1
2
3
4
i=0(第一天)
2
1
4
3
i=1(第二天)
3
4
1
2
i=2(第三天)
4
3
2
1
表9.1.1
通过上述方法,我们将赛事安排对应一张同余表。设同余表A,其中
A[i,x]—第i天与x队交锋的球队序号(0≤i≤n-1,1≤x≤n)。同余表的计算过程如下:
fori←0ton-2do {依次计算每一天的比赛场次}
forx←1tondo {枚举x队的序号}
begin
y←((n-1)+i-x)mod(n-1); {计算第i+1天与x队交锋的y队序号}ify=0theny←n-1;
A[i,x]←y;
ifA[i,x]=xthenbeginA[i,x]←n;A[i,n]←x;end;{then}end;{for}
在同余表中,同一天里出现了x:y和y:x的对垒阵局,它们同属一个场次。我们不妨取xy的一组,使
n
得一天进行
2
场互不相交的比赛:
fori←0ton-2dobegin
输出第i+1天的比赛提示;
forx←1tondo ifxA[i,x]then输出x队与A[i,x]队交锋;end;{for}
如果题意稍作变化:n可为奇数时怎么办?显然,为了使每个队与其余队交锋一次,每天让每个队出
n
场一次,比赛天数定为n天,每天设2场次。我们通过下述方法计算比赛方案:
列模数方程
(x+y)modn=i (1≤i≤n-1)
由此得出
y=(n+i-x)modn
表明第i+1天的一场比赛为x:y或者y:x。我们不妨依次枚举第i+1天交锋的一支球队x为1,…,n。若x球队的序号一旦确定,则按照上式得出与之交锋的y队序号。由于n为奇数,1≤i≤n-1,因此x≠y。为了使得模数方程得出的y值对应球队序号,不妨假设y=0时,y确定为n。
fori←0ton-1doforx←1tondobegin
y←(i+n-x)modn;ify=0thenk←n;a[i,x]←y;end;{for}
fori←0ton-1dobegin
输出第i+1天的比赛提示;
forx←1tondo ifxA[i,x]then输出x队与A[i,x]队交锋;end;{for}
您可能关注的文档
最近下载
- 现代饭店管理(课件).doc VIP
- 2024-2025学年广东省深圳市龙岗区六年级(上)期末语文试卷.pdf VIP
- 2025-2026学年内蒙古乌兰察布市初中联盟校八年级(上)期末数学试卷(含答案).pdf VIP
- (一模)哈三中2025届高三第一次模拟考试 化学试题(含答案).pdf
- Yamaha 雅马哈 乐器音响 PSR-E383 PSR-EW320 YPT-380 YPT-W320 Reference Manual 用户手册.pdf
- 医患沟通话术集锦.pdf VIP
- 2025年江苏常州初中学业水平考试英语试卷试题(含答案详解).docx VIP
- (一模)2026年合肥市高三第一次教学质量检测英语试卷(含答案)+听力音频+听力原文.docx
- 2023年山东泰安初中学业水平考试生物试卷真题(精校版).docx VIP
- 2024年山东青岛初中学业水平考试生物卷试题真题(精校打印版).pdf VIP
原创力文档

文档评论(0)