java 递归实现循环比赛日程

来源:互联网 发布:ipv4和ipv6无网络访问 编辑:程序博客网 时间:2024/05/01 11:17

在java实现循环比赛日程的程序中,主要运用的思想就是分治法。

       分治法:通俗的理解就是在实际需要解决的问题当中,将大的问题分成小的问题,逐次分割,直到达到容易解决的范围。然后再将分割的小域的解按一定规律组合在一起成为“母”解,也就是这个大问题的解。

       设有n=2*k个运动员要进行网球循环赛。先要设计一个满足一下要求的比赛日程:

     (1)每个选手必须与其他n-1个选手各比赛一次

     (2)每个选手一天只能比赛一次

     (3)循环赛一天进行n-1天

       按照这个要求可将比赛日程设计成n行和n-1列的一个表,在表的第1列放的是选手的编号其余列存放的是对应的比赛对手。按照分治策略,我们将所有对手设计成两组,n个选手的比赛日程表就可以通过n/2个选手设计的比赛日程来决定。递归的用这种一分为二的策略对选手进行分割,直到只剩下2个选手时,比赛日程的指定就变得简单。

运行的结果如下所示(运行结果是当运动员个数为8个的时候,最左边的一列为对应的运动员编号):

1234567821436587341278564321876556781234658721437856341287654321

0 0
原创粉丝点击