天天看點

循環賽問題(分治)

設有n=2k個運動員要進行網球循環賽。現要設計一個滿足以下要求的比賽日程表:⑴每個選手必須與其他n-1個選手各賽一次;⑵每個選手一天隻能賽一次;⑶循環賽一共進行n-1天。按此要求可将比賽日程表設計-成有n行和n-l列的一個表。在表中第i行和第j列處填入第i個選手在第j天所遇到的選手。

分析:

分治政策, 遞歸地用一分為二的政策對選手進行分割,知道隻剩2個選手。

1.初始化第一位選手

2.遞歸分割選手直到剩2人,通過傳回更新的比賽表,右下角複制左上角,左下角複制右上角

繼續閱讀