迴圈日程問題(遞迴 分治)

2022-05-07 01:27:11 字數 769 閱讀 5781

問題描述:

n=2^k個運動員進行網球公開賽,需要設計比賽日程表。每個選手必須和其他n-1個選手各賽一次;每個選手一天只能比賽一次;迴圈賽一共進行n-1天。按照此要求設計一張比賽日程表,該錶有n行和n-1列,第i行第j列是第i個選手第j天比賽的物件。

如上圖為k=3時的情況,從上圖可以看出,整張錶可被分成4部分,其中左上部分的左上角等於右下部分的左上角,其餘兩部分的左上角都等於左上部分左上角的值加4,這樣就可以不斷將每部分劃分,直到長度為1,退出遞迴。

**:

#include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long

#define mod 10000000007

#define mem(x) memset(x,0,sizeof(x))

using namespace std;

const int maxn = 1000 + 5, inf = 0x3f3f3f3f;

int res[maxn][maxn];

void createtable(int x,int y,int k)

int main()

printf("\n");}}

}

迴圈日程表問題(分治遞迴)

參考部落格 迴圈日程表問題。n 2k 個運動員進行網球迴圈賽,需要設計比賽日程表。每個選手必須與其他n 1 個選手各賽一次 每個選手一天只能賽一次 迴圈賽一共進行n 1 天。按此要求設計一張比賽日程表,該錶有n 行和n 1 列,第i 行j列為第i 個選手第j 天遇到的選手。該問題和棋盤問題很像,都可...

迴圈賽日程表 分治 遞推 遞迴

設有n 2 k個運動員要進行網球迴圈賽。現要設計乙個滿足以下要求的比賽日程表 1 每個選手必須與其他n 1個選手各賽一次 2 每個選手一天只能參賽一次 3 迴圈賽在n 1天內結束。請按此要求將比賽日程表設計成有n行和n 1列的乙個表。在表中的第i行,第j列處填入第i個選手在第j天所遇到的選手。其中1...

分治法 迴圈賽日程安排問題

問題 描寫敘述 設有n 2 k 位選手參加網球迴圈賽,迴圈賽共進行n 1 天,每位選手要與其它 n 1位選手比賽一場。且每位選手每天僅僅能賽一場,試安排比賽。舉例說明 1,當 n為偶數時,迴圈賽一共要進行n 1 天 比方,有運動員 周董,信哥,蔡依林,小七。一共 4個人,能夠例如以下安排 運動員第一...