今天做一道相對簡單的題。。
1.n=2^k個運動員進行網球迴圈賽,需要設計比賽日程表。每個選手必須與其他n-1個選手各比賽一次;每個選手每天只能比賽一次;迴圈賽一共進行n-1天。按此要求設計一張比賽日程表,該錶有n行,n-1列,第i行j列為第i個選手第j天遇到的選手。
解題思路:
利用分治原理 從大的 日程表一直分;
1 2 3 4 5 6 7 8
2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
4 3 2 1 8 7 6 5
5 6 7 8 1 2 3 4
6 5 8 7 2 1 4 3
7 8 5 6 3 4 1 2
8 7 6 5 4 3 2 1
右下角等於左上角,右上角等於左下角等於左上角的加上最大那個數。
寫程式是需要注意 位運算的優先順序比加減法還要低 一定要注意 不然會錯。。。。。
用vector 寫練習 vector 。
源程式:
#include #include #include #include using namespace std;
const int maxn = 1<<10;
int k;
vector> schd(maxn);
void print_schd()
迴圈日程表問題
迴圈日程表問題。n 2k個運動員進行網球迴圈賽,需要設計比賽日程表。每個選手必須與其他n 1 個選手各賽一次 每個選手一天只能賽一次 迴圈賽一共進行n 1 天。按此要求設計一張比賽日程表,該錶有 n 行和n 1列,第 i 行 j列為第 i 個選手第 j天遇到的選手。該問題和棋盤問題很像,都可以通過遞...
迴圈日程表
問題 設有n 2k個運動員要進行網球迴圈賽。現要設計乙個滿足以下要求的比賽日程表 每個選手必須與其他n 1個選手各賽一次,每個選手一天只能賽一次,迴圈賽一共進行n 1天。分析分治思想,k的日程表是通過k 1的日程表通過相加得到 include include using namespace std ...
迴圈比賽日程表
總時間限制 1000ms 記憶體限制 65535kb 描述 設有n個選手進行迴圈比賽,其中n 2 m,要求每名選手要與其他n 1名選手都賽一次,每名選手每天比賽一次,迴圈賽共進行n 1天,要求每天沒有選手輪空。輸入m m 10 輸出 形式的比賽安排表 數字之間以乙個空格分開 樣例輸入 3 樣例輸出 ...