分治算法——循环赛日程安排问题(Java实现)
2016-11-05 11:51
274 查看
循环赛日程安排问题
设有16个运动员将进行网球循环赛。现要设计一个满足以下要求的比赛日程表:⑴ 每个选手必须与其它15个选手各赛一场,⑵ 每个选手一天只能赛一场,⑶ 循环赛进行15天。
算法实现:
设有16个运动员将进行网球循环赛。现要设计一个满足以下要求的比赛日程表:⑴ 每个选手必须与其它15个选手各赛一场,⑵ 每个选手一天只能赛一场,⑶ 循环赛进行15天。
算法实现:
package practice; import java.util.LinkedList; /** * 循环赛日程安排问题。 * 设有16个运动员将进行网球循环赛。现要设计一个满足以下要求的比赛日程表: * ⑴ 每个选手必须与其它15个选手各赛一场, * ⑵ 每个选手一天只能赛一场, * ⑶ 循环赛进行15天。 * @author 光 * */ public class Demo { private int num; // 人数 private LinkedList<Integer> list = new LinkedList<Integer>(); public Demo(int n) { this.num = n; init(); } private void init() { if (num % 2 == 0) { //偶数个 for (int i = 0; i < num; i++) { list.add(i + 1); } } else //奇数个 { for (int i = 0; i < num; i++) { list.add(i + 1); } list.add(0); } } public void print() { for (int i = 0; i < list.size() - 1; i++) { System.out.println("第" + (i + 1) + "天"); for (int j = 0; j < list.size() / 2; j++) { System.out.println(list.get(j) + "--" + list.get(list.size() - 1 - j)); } int temp = list.pollLast(); //获取最后一个元素 //System.out.println(list.get(1)); list.add(1, temp);//将最后一个元素放在List的第二个位置 } } public static void main(String[] args) { //实例化对象 Demo d = new Demo(16); d.print(); } }输出结果:
第1天 1--16 2--15 3--14 4--13 5--12 6--11 7--10 8--9 第2天 1--15 16--14 2--13 3--12 4--11 5--10 6--9 7--8 第3天 1--14 15--13 16--12 2--11 3--10 4--9 5--8 6--7 第4天 1--13 14--12 15--11 16--10 2--9 3--8 4--7 5--6 第5天 1--12 13--11 14--10 15--9 16--8 2--7 3--6 4--5 第6天 1--11 12--10 13--9 14--8 15--7 16--6 2--5 3--4 第7天 1--10 11--9 12--8 13--7 14--6 15--5 16--4 2--3 第8天 1--9 10--8 11--7 12--6 13--5 14--4 15--3 16--2 第9天 1--8 9--7 10--6 11--5 12--4 13--3 14--2 15--16 第10天 1--7 8--6 9--5 10--4 11--3 12--2 13--16 14--15 第11天 1--6 7--5 8--4 9--3 10--2 11--16 12--15 13--14 第12天 1--5 6--4 7--3 8--2 9--16 10--15 11--14 12--13 第13天 1--4 5--3 6--2 7--16 8--15 9--14 10--13 11--12 第14天 1--3 4--2 5--16 6--15 7--14 8--13 9--12 10--11 第15天 1--2 3--16 4--15 5--14 6--13 7--12 8--11 9--10
相关文章推荐
- 分治算法-球队循环赛日程安排-java实现
- 分治算法_汉诺塔问题_Java实现
- java分治算法实现n皇后问题
- java分治算法实现n皇后问题
- java分治算法实现n皇后问题
- 分治算法---棋盘覆盖问题java代码实现
- java分治算法实现n皇后问题
- Java基于分治算法实现的棋盘覆盖问题示例
- java分治算法实现n皇后问题
- 循环赛问题 日程安排的一种排列方式 使用C++实现
- Java Hanoi塔问题简单分治算法实现
- 分治算法-球队循环赛日程安排-java实现
- 同样一个问题的两种 java 实现代码 的比较
- “循环赛日程安排”问题的分而治之解决算法
- 生产者消费者问题的Java实现
- “循环赛日程安排”问题的分而治之解决算法
- “循环赛日程安排”问题的分而治之解决算法
- 【原创】蚂蚁爬杆问题之java实现
- “循环赛日程安排”问题的分而治之解决算法
- java代码中实现字符编码转换(解决中文乱码问题)