循环赛日程表问题

输入正整数k表示有n=2^k个运动员进行循环比赛,需要设计比赛日程表。每个选手与其他n-1个选手各赛一次;每个选手一天只能赛一次;循环赛一共进行n-1天。

按此要求设计一张比赛日程表,该表有n行和n-1列,第i行第j列表示第i个选手第j天遇到的选手。

分析:

本题的方法有很多,递归是其中一种比较容易理解的方法。 如下图所示是k=3时的一个可行解,它是4块拼起来的。 左上角是k=2时的一组解,左下角是左上角每个数加4得到,而
右上角、 右下角分别由左下角、 左上角复制得到。

递归,每一次分为4个区域来处理。当然,也可以根据上面分析的规律直接模拟填充数组即可。循环k-1次,每一次填充除了左上角之外的另外3个区域。

代码参考:

http://www.cnblogs.com/crx234/p/5988418.html

http://blog.csdn.net/liufeng_king/article/details/8488421

递归的划分过程可以参考残缺棋盘的划分过程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值