比賽日程安排演算法
這幾天看都一個ITAT比賽的一道題 題目是這樣的
1、 設有n個球隊要進行排球迴圈賽,設計一個滿足以下要求的比賽日程表:
a) 每個球隊必須與其他n-1個球隊各賽一次;
b) 每個球隊一天只能賽一次;
c) 當n是偶數時,迴圈賽進行n-1天。當n是奇數時,迴圈賽進行n天。
n=6的比賽日程表示例(把6個隊從1到6進行編號):
n=6的比賽日程表
第一天 |
第二天 |
第三天 |
第四天 |
第五天 |
1~2 |
1~3 |
1~4 |
1~5 |
1~6 |
3~5 |
2~4 |
2~5 |
2~6 |
2~3 |
4~6 |
5~6 |
3~6 |
3~4 |
4~5 |
n=5的比賽日程表示例(增加編號0,凡碰0者該天即輪空):
n=5的比賽日程表
第一天 |
第二天 |
第三天 |
第四天 |
第五天 |
1~0 |
1~5 |
1~4 |
1~3 |
1~2 |
2~5 |
0~4 |
5~3 |
4~2 |
3~0 |
3~4 |
2~3 |
0~2 |
5~0 |
4~5 |
想了好久也看了很多參考資料 什麼分治演算法 。(看的不是很明白)
後來在貼吧上看的有人跟了個很棒的思路!
------------------------------------------------------------------------------------------------
以6隊為例,用數字表示,排成一個環形。
1號隊不動,每一輪,逆時針轉動,讓各隊從1號頭上依次跳過,每移位一次得出的對陣就是本輪對陣。
無論有多少個隊結果都是符合要求的
具體實現時用一個數組來處理就好了
---
1 4
2 5
3 6
---
1 5
4 6
2 3
---
1 6
5 3
4 2
---
1 3
6 2
5 4
----
1 2
3 4
6 5
----------------------------------------------
由 ahyyxx222提供
確實簡單不少
我用了一個LinkedList實現
public class T{ private int num; // 隊伍數 private LinkedList<Integer> list = new LinkedList<Integer>(); public T(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(); //移動 list.add(1, temp); } }
相關推薦
比賽日程安排演算法
這幾天看都一個ITAT比賽的一道題 題目是這樣的 1、 設有n個球隊要進行排球迴圈賽,設計一個滿足以下要求的比賽日程表: a) 每個球隊必須與其他n-1個球隊各賽一次; b) 每個球隊一天只能賽一次; c) 當n是偶數時
分治演算法思想(4)未——兩個大數相乘,歐冠冠軍盃比賽日程安排
(1)分治演算法基礎解題一般步驟:1.分解,將要解決的問題劃分成若干規模較小的同類問題2.求解,當子問題劃分的足夠小時,用較簡單的方法解決3.合併,按原問題的要求,將子問題的解逐層合併構成原問題的解此方法主要是對分治的理解,以及結果的調整和對結果的合併。較難理解~需仔細思考(
比賽日程安排 hihoCoder1670
題意: 給M場比賽的時間和參賽的兩支隊伍,判斷這個日程安排是否可行。要求是每支隊伍連續兩場比賽之間至少間隔一天,即每支隊伍一天不能有兩場或更多場比賽,也不能連續兩天都有比賽。 思路: 由於給的資料不是按照日期順序給的,所以我們要先收集好資料在按照日期排
分治演算法:乒乓球比賽的日程安排
乒乓球比賽的日程安排 問題: 設有n位選手參賽,初賽進行n-1天,每位選手每天必須比賽一次,不能輪空。程式設計求解賽程安排。 分析: 1、求n位選手的賽程安排,可採用分治演算法的思想,將問題規模不斷縮
演算法-分治法例項:迴圈賽日程安排問題
一、問題描述 設有 n(2^k)位選手參加網球迴圈賽,迴圈賽一共需要進行 n-1天,每位選手需要和其他的 n-1 位選手各比賽一場,不輪空。試著安排這個比賽的安排日程。 二、問題分析 本問題可以利用分治法來進行求解,設 n位選手被順序標號為1,2,
數學建模比賽日程
height logs 建模 src eight 技術分享 數學建模 圖論 .cn 7月5日 數模培訓圖論方法建模,討論數模分工 7月6日 數模培訓線性貴,(笨牛書店)買書 7月7日 數模培訓 數學建模比賽日程
日程安排
gmail blog -s idt 記錄 安排 有趣 height src 很有趣. 以後就用它來記錄生活+工作+學習了. 也用它來開展``會議‘‘. 日程安排
迴圈賽日程安排問題
設有n=2k個選手要進行網球迴圈賽,要求設計一個滿足以下要求的比賽日程表: (1)每個選手必須與其他n-1個選手各賽一次; (2)每個選手一天只能賽一次。 按此要求,可將比賽日程表設計成一個 n 行n-1列的二維表,其中,第 i 行
安卓手機上有什麼好用的日程安排管理軟體?
安卓手機上有什麼簡單好用的日程安排管理軟體? 在百度知道上有一個於此相關的問題,題主的要求十分明確,在這篇文章中,小編不妨以圖中的問題為基準,為大家介紹一款簡單好用的手機日程安排管理軟體。 1.分類管理待辦任務的日程管理軟體 敬業籤雲便籤是一款專為商務辦公族設計的桌面提醒便
java 遞迴實現迴圈比賽日程
在java實現迴圈比賽日程的程式中,主要運用的思想就是分治法。 分治法:通俗的理解就是在實際需要解決的問題當中,將大的問題分成小的問題,逐次分割,直到達到容易解決的範圍。然後再將分割的小域的解按一定規律組合在一起成為“母”
我的日程安排表
實現一個 MyCalendar 類來存放你的日程安排。如果要新增的時間內沒有其他安排,則可以儲存這個新的日程安排。 MyCalendar 有一個 book(int start, int end)方法。它意味著在 start 到 end 時間內增加
Android帶日程安排的自定義日曆控制元件
前言: 本文實現的是,自定義的日曆控制元件,可以新增日程安排。 本篇是基於網上原始碼做的相應修改,本文只列出修改的內容,需要看原始碼博文的請到: 一、效果展示 二、日曆控制元件的修改 1、星期顯示中文 此處
基於FullCalendar外掛的個人日程安排系統(4)
這一篇開始要用到FullCalendar外掛,由於我自己也是頭一次用,也不是很瞭解,所以只能簡單介紹一下,大家可以一起討論。 效果圖 customer_index.jsp <%@ page language="java" content
[Swift]LeetCode732. 我的日程安排表 III | My Calendar III
lee output for each oca execute dex tex spa event Implement a MyCalendarThree class to store your events. A new event can always be added
ALGO-65演算法訓練 比賽安排 (陣列記錄判斷)
演算法訓練 比賽安排 時間限制:1.0s 記憶體限制:512.0MB 問題描述 設有有2 n(n<=6)個球隊進行單迴圈比賽,計劃在2 n – 1天內完成,每個隊
演算法訓練 比賽安排 C語言實現
問題描述 設有有2 n(n<=6)個球隊進行單迴圈比賽,計劃在2 n – 1天內完成,每個隊每天進行一場比賽。設計一個比賽的安排,使在2 n – 1天內每個隊都與不同的對手比賽。 輸入格式 輸入檔案matchplan.in共一行,輸入n的數值。 輸出格式 輸出檔案matchplan.out共
貪心演算法-活動安排問題
對於活動安排問題,該問題要求高效地安排一系列爭用某一公共資源的活動。貪心演算法提供了一個簡單漂亮的方法,使盡可能多的安排活動能相容的使用公共資源。 貪心演算法不能總是得到整體問題的最優解,但對於活動安排問題,貪心演算法卻總能得到整體的最優解。 可以將所有活動的開始時間、終止時間以及
貪心演算法(1)—— 活動安排問題 以及 電視節目問題 的區別
一、活動安排問題 #include <iostream> #include <algorithm> using namespace std; /* 題目型別:活動安排問題 特點:所有活動都需要進行,要求輸出所需的會場數 演算法:貪心演算法 注意
會場安排問題(貪心演算法) Comparator類排序的學習
主要是學習類如何進行排序利用 arrays 嗯 還有反正就是陣列排序的學習 程式碼: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.PrintS
2018年全國多校演算法寒假訓練營練習比賽(第一場) Problem:H
問題H:方塊與收納盒 時間限制:1 Sec 記憶體限制: 32768K Problem Des