主题:一个菜鸟的疑问
我是初学者兼垃圾
[专家分:0] 发布于 2006-08-18 19:53:00
设有2^n(n<=6)个球队进行单循环比赛,计划在2^n-1天内完成,每个队每天进行一场比赛.设计一个比赛的安排,使在2^n-1天内每个队都与不同的对手比赛.例如n=2时的比赛安排为:
队 1 2 3 4
比赛 1-2 3-4 第一天
1-3 2-4 第二天
1-4 2-3 第三天
2005奥赛新题集上的
我没做出来[em8][em8]
回复列表 (共4个回复)
沙发
moz [专家分:37620] 发布于 2006-08-18 22:45:00
1. 以第一队为标准起点
第1天,第2天,第3天,第4天......
2 3 4 5 ......
2. 其他队前面有安排过的,跳过,没安排的,找一个空位安排进去.
3. 重复
板凳
moz [专家分:37620] 发布于 2006-08-18 22:46:00
DEFLNG A-Z
n = 2
m = 2^n
DIM s(m, m)
FOR i = 1 TO m
s(i, 0) = i
NEXT
FOR i = 1 TO m
FOR j = 1 TO m - 1
IF s(i, j) = 0 THEN
FOR k = 1 TO m
FOR l = 0 TO j - 1
IF k = s(i, l) THEN EXIT FOR
NEXT
FOR l2 = 1 TO i - 1
IF k = s(l2, j) THEN EXIT FOR
NEXT
IF l = j AND l2 = i THEN
s(i, j) = k
s(k, j) = i
EXIT FOR
END IF
NEXT k
END IF
NEXT j, i
cls
FOR i = 1 TO m
FOR j = 0 TO m - 1
PRINT s(i, j);
IF j = 0 THEN PRINT "-";
NEXT
PRINT
NEXT
3 楼
yxc4444 [专家分:0] 发布于 2006-08-22 08:07:00
CLS
L1: INPUT n
IF n < 1 OR n > 6 THEN GOTO L1
n = INT(n)
DIM a(2 ^ n, 2 ^ n), b(2 ^ n)
FOR i = 1 TO 2 ^ n
FOR j = 1 TO 2 ^ n
IF i = j THEN a(i, j) = 1 ELSE a(i, j) = 0
NEXT j
NEXT i
FOR i = 1 TO 2 ^ n - 1 '比赛的天数。'
c = 1
FOR j = 1 TO 2 ^ (n - 1) '每天需要比赛的场次。'
FOR k = 2 TO 2 ^ n 'C代表参与比赛的一个队,K也是如此。'
rem 下面程序中b( )值为i说明今天已有比赛场次,a( )为1说明历史上两队已经比赛。
IF b(c) = i THEN c = c + 1
IF a(c, k) <> 1 AND b(c) <> i AND b(k) <> i THEN
PRINT TAB(((j - 1) MOD 8) * 8); LTRIM$(STR$(c)); "-"; LTRIM$(STR$(k));
a(c, k) = 1: b(c) = i: b(k) = i
EXIT FOR
END IF
NEXT k
NEXT j
PRINT
NEXT i
END
4 楼
网络爱好者 [专家分:60] 发布于 2006-08-24 10:50:00
这道题有问题,请问你是彭泽昊吗?
我来回复