递归与分治

Similar documents
幻灯片 1

没有幻灯片标题

Ps22Pdf

试卷

Microsoft PowerPoint - schap1 [兼容模式]

Intro to Alg

Intro to Alg

zt

PowerPoint Presentation

untitled

ttian

! "#$%& $()*+#$, $(-.&,./.+#/(-.&01( &-#&(&$# (&2*(,#-3.,14& $ +()5(*-#5(-#/-/#(-1#&-+)(& :;<<= > A B?

戲劇研究 創刊號 詞之雅化 實為 折子戲 源生之三個重要背景 歷代戲曲劇種如先秦至唐代之 戲曲小戲 宋金雜劇院本 北曲雜劇四折每折作獨立性演出 乃至明清民間 小戲與南雜劇之一折短劇 均實為折子戲之 先驅 則明正德至嘉靖間北劇南 戲選本之 摘套 與 散齣 迎神賽社禮節傳簿 中之 零折散齣 均可 視之為

論鄭玄對《禮記‧月令》的考辨

2011-论文选集-2.cdr

# # # # # # = #, / / / / # 4 # # # /# 02-1 / 0 /? / 0 / 0? # # / >

!!! "# $ " %!!

Microsoft PowerPoint - DS_Ch4_EN [兼容模式]


1


递归函数的高效实现方法

PowerPoint 演示文稿

Microsoft PowerPoint - Chap02.pptx

2007年普通高等学校招生全国统一考试


《米开朗琪罗传》


保母人員丙級應檢資料第二部份 doc



民國八十九年台灣地區在校學生性知識、態度與行為研究調查

Microsoft PowerPoint - w10.ppt

九十六學年度第一學期第三次定期考國文科試題

穨古代韓國的巫與日官2.PDF

T051F_01

合金投资年报正文.PDF


从 宾 馆 到 又 一 城 是 十 五 分 钟, 从 又 一 城 到 邵 逸 夫 是 十 分 钟, 去 时 一 路 上 坡 很 辛 苦, 回 时 一 路 下 坡 很 轻 松, 很 像 上 小 学 时 的 心 情, 这 是 最 初 几 天 最 深 的 感 受 有 段 时 间 很 少 走 校 内 的 路

C = C + C C = + + C C C C 1 2 3


5. 10(1) 10(2) A-1 17(2) 7. A-2 18A B

untitled

《美国名将全传——德怀特·戴维·艾森豪威尔》


untitled

重庆渝开发股份有限公司

. (A) (B) (C) A (D) (E). (A)(B)(C)(D)(E) A

untitled

!!! #!!! $##%!!! $!!!! &!!!! (!! %!! )!!! *!!!!!!! #!!!!! $

<4D F736F F D20D5D0B1EACEC4BCFEBCB0C7E5BDE0B7FECEF1BACFCDAC28C2C9CAA6B0E631A3A92E646F6378>

<4D F736F F D20B160A5CEA4A4B0EABCF4BB79A5DCA8D22E646F63>

國立中山大學學位論文典藏.PDF

"#" " "" " " "# $ " %( )# #( %& ( " % " " # ) *# " # " $ " #(( " " "#+( % " % $ " & # " " $ $ " " $ % & " #$ % $ "& $ "" " ") # #( "( &( %+"(

89,,,,,,,,,,,,,,,,?,???,,,,,,,,,,,,,

!##$ %!!##$ & (!##$ %!!##$ &!##$!##(!##$! "

!"#!" # $% & ($) *! +,-./ 0%)!1"%& 0%2!$!$$$ "$$$$ #$ % $$30!4$4 5,6 *& (+ 0!&" * + 7!!4 & ( )! & ( )! 80)09! 7&! #!1!1$" &&!!%!,-./ 0%)!1"%& 0%2 &1$

Microsoft Word 養生與保健_中山大學_講義


萬里社區老人健康照護手冊

Microsoft Word - 強制汽車責任保險承保及理賠作業處理辦法 doc

Microsoft Word - 06.Understanding of Pregnancy and Birth.doc

(➂)11. 炎 炎 夏 日, 即 使 下 起 滂 沱 大 雨, 都 消 除 不 了 令 人 心 煩 的 暑 氣 這 句 話 主 要 想 表 達 什 麼? ➀ 夏 日 裡 經 常 下 著 滂 沱 大 雨, 令 人 心 煩 ➁ 下 著 滂 沱 大 雨 的 日 子, 可 以 消 除 暑 氣 ➂ 夏 日

範本檔

附 件 一 : 办 理 集 中 式 银 期 转 账 业 务 网 点 名 单 序 号 地 区 网 点 名 称 地 址 联 系 人 电 话 23 工 商 银 行 安 徽 省 铜 陵 百 大 支 行 铜 陵 市 长 江 东 路 50 号 鲁 桂 珍 工 商 银 行 安 徽

2. 二 年 級 吳 毓 秀 老 師 : 感 謝 午 餐 公 司 平 時 均 能 準 時 送 餐, 但 希 望 能 不 要 使 用 加 工 品, 且 學 生 反 映 希 望 能 多 加 蛋 品 的 食 物 3. 三 年 級 柯 阿 青 老 師 : 雞 肉 有 血 水 味, 請 午 餐 公 司 能 調

高雄市立五福國民中學九十四學年度第一學期第三次段考二年級本國語文學習領域試題卷

人 物 春 秋 杨 永 泰 将 其 削 藩 策 略 概 括 为 : 以 经 济 方 法 瓦 解 冯 玉 祥 的 第 二 集 团 军, 以 政 治 方 法 解 决 阎 锡 山 的 第 3 集 团 军, 以 军 事 方 法 解 决 李 宗 仁 的 第 四 集 团 军, 以 外 交 方 法 对 付 张 学

台北老爺校外實地參訪結案報告


糖尿病食譜



,,,,,,, (,, ),,,,,,,,,,,,,,, ,,, 4 11,, ( ),,,, ( ), :, ( ),,, 1995, 66 ; ( ),, 1996, , 3-4,,


2002 4,,, 1941,,,,,,,,,,,,,,,,,, : ;:, 1991,

幻灯片 1

Historical Fund Prices_TC_mt_2017.pdf

2016 年 地 质 工 程 系 教 学 工 作 安 排 2016 学 年 我 系 将 在 总 结 过 去 工 作 的 基 础 上, 结 合 今 年 学 院 以 抓 质 量 强 内 涵 促 改 革 调 结 构 建 品 牌 细 管 理 重 过 程 为 宗 旨, 以 规 范 管 理 深 化 内 涵 为


实 习 上 下 点 表 格 解 释 和 相 关 纪 律 要 求 : 1 表 格 中 所 有 名 词 都 为 简 称, 包 括 医 院 名 称 四 年 级 五 年 级 各 专 业 名 称 等 所 有 时 间 都 为 学 生 装 好 行 李 出 发 时 间, 请 提 前 0 分 钟 将 行 李 运 到

3 基 金 杠 杆 从 分 级 基 金 的 概 念, 我 们 知 道 了 分 级 基 金 的 A 份 额 是 每 年 获 得 固 定 收 益 的 稳 健 份 额,B 份 额 是 具 有 杠 杆 效 应 的 激 进 份 额 分 级 基 金 中 的 杠 杆 一 般 有 三 类 : 份 额 杠 杆 =(A

简报158期.doc

zt

<4D F736F F D203136BCADBBD8D2E4D3EBD1D0BEBF2E646F63>

萧山中学课程建设方案.doc


Microsoft Word - 9pinggb_A4.doc

Microsoft Word - 9pinggb_A4-f4.doc

理 论 探 索 事 业 单 位 改 革 的 五 点 思 考 余 路 [ 摘 要 ] 事 业 单 位 改 革 是 中 国 改 革 的 重 要 环 节, 其 影 响 力 和 难 度 不 亚 于 国 有 企 业 改 革 本 文 着 重 围 绕 推 进 事 业 单 位 改 革 应 考 虑 的 五 个 方 面

日 本 位 于 亚 洲 东 部, 太 平 洋 西 北 角, 是 我 国 东 方 的 一 个 岛 国 在 洪 积 世 ( 注 1) 的 大 部 分 时 期 内, 日 本 与 大 陆 相 连 大 约 在 洪 积 世 晚 期 至 冲 积 世 ( 注 2) 初 期, 日 本 各 地 发 生 海 进, 出 现

2深化教育教学改革、创新人才培养模式

Microsoft Word - 9pinggb_let.doc

Microsoft Word - 9pingb5_let.doc

退休權益.ppt [相容模式]

Microsoft Word - 1.《國文》試題評析.doc

Ps22Pdf

$%%& ()*+, %&, %-&&%%,. $ %,, $,, & /$- 0(1 $%%& %& 234 %-%, 5&%6&633 & 3%%, 3-%, %643 -%%% :::; 7<9; %-%, 3$%$ :::;

# $# #!# # # # # # # %# # # &# # # # #! "

Ps22Pdf

Transcription:

递归与分治

递归函数设计 阶乘的计算公式 5! = 5 4 3 2 1 = 120 N! = N N 1 2 1 换一种思路可以写成 5! = 5 4! 4! = 4 3! 3! = 3 2! 2! = 2 1! 1! = 1 自底向上计算结果 2

递归函数设计 阶乘公式可以写成 N! = N N 1! 1! = 1 这其实就是递归的思想, 即函数的定义中使用函数自身的方法 除了计算机科学中, 还有更多的递归的例子 3

递归的例子 从前有座山, 山里有座庙, 庙里有个老和尚, 正在给小和尚讲故事呢! 故事是什么呢? 从前有座山, 山里有座庙, 庙里有个老和尚, 正在给小和尚讲故事呢! 故事是什么呢? 从前有座山, 山里有座庙, 庙里有个老和尚, 正在给小和尚讲故事呢! 故事是什么呢? 4

递归的例子 德罗斯特效应 Droste effect 是递归的一种视觉形式 是指一张图片的某个部分与整张图片相同, 如此产生无限循环 5

德罗斯特效应 6

德罗斯特效应 7

设计递归函数 程序设计中如何设计这样的函数呢? N! = N N 1! 1! = 1 1 def fac(n): 2 return N * fac(n-1) 这个函数没有边界条件, 函数 fac 的调用将无法终止 一定要注意首先递归函数要有一个边界条件, 之后再考虑递归的步骤 8

9

设计递归函数 def fac(n): if N <= 1: return 1 边界条件 else: return N * fac(n-1) 递归步骤 10

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) >>> fac(1) Result: 1 初始条件没有问题! 11

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) fac(5) 12

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) fac(5) 5 * fac(4) 13

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) fac(5) 5 * fac(4) 4 * fac(3) 14

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) fac(5) 5 * fac(4) 4 * fac(3) 3 * fac(2) 15

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) fac(5) 5 * fac(4) 4 * fac(3) 3 * fac(2) 2 * fac(1) 16

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) 栈 fac(5) 5 * fac(4) 4 * fac(3) 保存了所有对 fac 的调用 3 * fac(2) 2 * fac(1) 1 17

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) fac(5) 5 * fac(4) 4 * fac(3) 3 * fac(2) 2 * 1 18

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) fac(5) 5 * fac(4) 4 * fac(3) 3 * 2 19

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) fac(5) 5 * fac(4) 4 * 6 20

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) fac(5) 5 * 24 21

def fac(n): if N <= 1: return 1 函数幕后 else: return N * fac(n-1) fac(5) Result: 120 22

递归函数设计 挖掘自相似的特性 产生简介 优雅的代码 更少的工作! def fac(n): if N <= 1: return 1 else: return N * fac(n-1) 你需要控制边界条件 也就是你能想到的最简单的情况! 递归完成了几乎所有的剩余工作! 23

递归函数设计 但是你也必须自己完成一步 def fac(n): if N <= 1: return 1 else: return fac(n) 这样是无法工作的! 24

递归定义 递归 (Recursion) 就是子程序 ( 或函数 ) 直接调用自己或通过一系列调用语句间接调用自己, 是一种描述问题和解决问题的基本方法 递归有两个基本要素 : 1. 边界条件 : 确定递归到何时终止 ; 2. 递归模式 : 大问题是如何分解为小问题的 25

Fibonacci 数列 无穷数列 1,1,2,3,5,8,13,21,34, 55,, 称为 Fibonacci 数列 它可以递归地定义为 : F( n) F( n 1) 1 1 F( n 2) n n n 0 1 1 边界条件 递归模式 26

Fibonacci 数列 def Fibonacci(N): if N <= 1: return 1 else: return Fibonacci(N-2) + Fibonacci(N-1) 这段程序中什么是边界条件? 什么是递归模式? 你能模拟一下这个程序的运行吗? 27

Hanoi 塔问题 在印度, 有这么一个古老的传说 : 在世界中心贝拿勒斯 ( 在印度北部 ) 的圣庙里, 一块黄铜板上插着三根宝石针 印度教的主神梵天在创造世界的时候, 在其中一根针上从下到上地穿好了由大到小的 64 片金片, 这就是所谓的汉诺塔 不论白天黑夜, 总有一个僧侣在按照下面的法则移动这些金片 : 一次只移动一片, 不管在哪根针上, 小片必须在大片上面 僧侣们预言, 当所有的金片都从梵天穿好的那根针上移到另外一根针上时, 世界就将在一声霹雳中消灭, 而梵塔 庙宇和众生也都将同归于尽 28

Hanoi 塔问题 一共有 3 个塔座, 在一个塔座上有一叠圆盘, 这些圆盘自下而上, 由大到小地叠在一起 要求将塔座上的这一叠圆盘移到另一塔座上, 并仍按同样顺序叠置 并遵守以下移动规则 : 1. 每次只能移动 1 个圆盘 ; 2. 任何时刻都不允许将较大的圆盘压在较小的圆盘之上 ; 3. 在满足移动规则 1 和 2 的前提下, 可将圆盘移至任一塔座上 29

Hanoi 塔问题 首先将 A 上的黄色和绿色通过 C 移动到 B 上 A B C 30

Hanoi 塔问题 首先将接着将 A 上的黄色和绿色通过红色移动到 CC 移动到柱上 B 上 A B C 31

Hanoi 塔问题 接着将最后将 A B 柱上的红色移动到黄色和绿色通 C 柱上过 A 柱移动到 C 上, 完成! A B C 32

Hanoi 塔问题 最后将 B 柱上的黄色和绿色通过 A 柱移动到 C 上, 完成! A B C 33

Hanoi 塔问题 汉诺塔问题可以通过以下三个步骤实现 : 1. 将塔 A 上的 n-1 个碟子借助塔 C 先移到塔 B 上 2. 把塔 A 上剩下的一个碟子移到塔 C 上 3. 将 n-1 个碟子从塔 B 借助塔 A 移到塔 C 上 显然, 这是一个递归求解的过程 34

Hanoi 塔问题 35

Hanoi 塔问题 1 def Hanoi(N, A, B, C): 2 3 if N == 1: 4 Move(A,C) 5 6 else: 7 Hanoi(N-1, A, C, B) 8 Move(A, C) 9 Hanoi(N-1, B, A, C) 36

递归函数的运行轨迹 在递归函数中, 调用函数和被调用函数是同一个函数, 需要注意的是递归函数的调用层次, 如果把调用递归函数的主函数称为第 0 层, 进入函数后, 首次递归调用自身称为第 1 层调用 ; 从第 i 层递归调用自身称为第 i+1 层 反之, 退出第 i+1 层调用应该返回第 i 层 采用图示方法描述递归函数的运行轨迹, 从中可较直观地了解到各调用层次及其执行情况 37

Hanio(3,A,B,C) Hanio(2,A,C,B) Hanio(2,A,C,B) Hanio(1,A,B,C) Move (A,B) Hanio(1,C,A,B) Hanio(1,A,B,C) Move (A,C) Hanio(1,C,A,B) Move (C,B) Move (A,C) Hanio(2,B,A,C) Hanio(1,B,C,A) Hanio(1,B,C,A) Move (B,A) Hanio(2,B,A,C) Move (B,C) Hanio(1,A,B,C) Hanio(1,A,B,C) Move (A,C) 结束 38

Hanoi 塔问题 由上面的递归函数我们可以推得 f n = 2f n 1 + 1 f(n) 是 n 个金片时需要移动的次数, 并且 f 1 = 1 我们可以得到 f n = 2 n 1 39

Hanoi 塔问题 那么把 64 片金片都移动到位的话, 需要多长的时间呢? f 64 = 2 64 1 = 18446744073709551615 如果假设每秒移动一次, 一年有 31536000 秒, 那么需要 18446744073709551615 31536000 = 584942417355.07 年 = 5849 亿年 而地球存在至今不过 45 亿年, 太阳系的预期寿命据说也就是数百亿年 真的过了 5845 亿年, 不说太阳系和银河系, 至少地球上的一切生命, 连同梵塔 庙宇等, 都早已经灰飞烟灭 40

总结递归 递归算法结构清晰, 可读性强, 而且容易用数学归纳法来证明算法的正确性, 因此, 它为设计算法和调试程序带来很大方便, 是算法设计中的一种强有力的工具 但是, 因为递归算法是一种自身调用自身的算法, 随着递归深度的增加, 工作栈所需要的空间增大, 递归调用时的辅助操作增多, 因此, 递归算法的运行效率较低 41

分治法 将一个难以直接解决的大问题, 划分成一些规模较小的子问题, 以便各个击破, 分而治之 更一般地说, 将要求解的原问题划分成 k 个较小规模的子问题, 对这 k 个子问题分别求解 如果子问题的规模仍然不够小, 则再将每个子问题划分为 k 个规模更小的子问题, 如此分解下去, 直到问题规模足够小, 很容易求出其解为止, 再将子问题的解合并为一个更大规模的问题的解, 自底向上逐步求出原问题的解 42

分治法的典型情况 原问题的规模是 n 子问题 1 的规模是 n/2 子问题 2 的规模是 n/2 子问题 1 的解 子问题 2 的解 原问题的解 43

分治法的求解过程 分治法的求解过程由以下三个阶段组成 : 1. 划分 把规模为 n 的原问题划分为 k 个规模较小的子问题, 并尽量使这 k 个子问题的规模大致相同 2. 求解子问题 各子问题的解法与原问题的解法通常是相同的, 可以用递归的方法求解各个子问题, 有时递归处理也可以用循环来实现 3. 合并 把各个子问题的解合并起来, 合并的代价因情况不同有很大差异, 分治算法的有效性很大程度上依赖于合并的实现 44

归并排序 二路归并排序的分治策略是 : 1. 划分 : 将待排序序列 r 1, r 2,, r n 划分为两个长度相等的子序列 r 1,, r n/2 和 r n/2+1,, r n ; 2. 求解子问题 : 分别对这两个子序列进行排序, 得到两个有序子序列 ; 3. 合并 : 将这两个有序子序列合并成一个有序序列 45

归并排序 r 1 r n/2 r n/2+1 r n 划分 r 1 < <r n/2 r n/2+1 < <r n 递归处理 r'' 1 < <r'' n/2 <r'' n/2+1 < <r '' n 合并解 46

快速排序 快速排序的分治策略是 : 1. 划分 : 选定一个记录作为基准, 将整个序列划分为两个子序列 r 1 r i-1 和 r i+1 r n, 前一个子序列中记录的值均小于或等于基准值, 后一个子序列中记录的值均大于或等于基准值 ; 2. 求解子问题 : 分别对划分后的每一个子序列递归处理 ; 3. 合并 : 由于对子序列 r 1 r i-1 和 r i+1 r n 的排序是就地进行的, 所以合并不需要执行任何操作 47

快速排序 [ r 1 r i-1 ] r i [ r i+1 r n ] 均 r i 基准均 r i 位于最终位置 归并排序按照记录在序列中的位置对序列进行划分, 快速排序按照记录的值对序列进行划分 48

二分查找法 二分查找法的分治策略是 : 1. 划分 : 取排过序的序列 r 1, r 2,, r n 中间一个数分为两个长度相等的子序列 ; 2. 求解子问题 : 判断是否是要查找的数字, 以及查找的数字在哪个序列中 ; 3. 合并 : 返回最终是否查找了到了相应的值 49

棋盘覆盖问题 在一个 2 k 2 k (k 0) 个方格组成的棋盘中, 恰有一个方格与其他方格不同, 称该方格为特殊方格 棋盘覆盖问题要求用 4 种不同形状的 L 型骨牌覆盖给定棋盘上除特殊方格以外的所有方格, 且任何 2 个 L 型骨牌不得重叠覆盖 50

棋盘覆盖问题 如何利用分治的思想来解决棋盘覆盖问题呢? 分治法求解棋盘覆盖问题的技巧在于划分棋盘, 使划分后的子棋盘的大小相同, 并且每个子棋盘均包含一个特殊方格, 从而将原问题分解为规模较小的棋盘覆盖问题 51

棋盘覆盖问题 k>0 时, 可将 2 k 2 k 的棋盘划分为 4 个 2 k-1 2 k-1 的子棋盘, 这样划分后, 由于原棋盘只有一个特殊方格, 所以, 这 4 个子棋盘中只有一个子棋盘包含该特殊方格, 其余 3 个子棋盘中没有特殊方格 为了将这 3 个没有特殊方格的子棋盘转化为特殊棋盘, 以便采用递归方法求解, 可以用一个 L 型骨牌覆盖这 3 个较小棋盘的会合处, 从而将原问题转化为 4 个较小规模的棋盘覆盖问题 递归地使用这种划分策略, 直至将棋盘分割为 1 1 的子棋盘 52

棋盘覆盖问题 2 k-1 2 k-1 2 k-1 2 k-1 2 k-1 2 k-1 2 k-1 2 k-1 棋盘分割 构造相同子问题 53

棋盘覆盖问题 采用分治法解决棋盘覆盖问题比单纯的穷举法要快速很多 想一想你能不能写出像解决 Hanoi 塔问题的递归程序吗? 54

循环赛日程安排问题 设有 n=2 k 个选手要进行网球循环赛, 要求设计一个满足以下要求的比赛日程表 : 1. 每个选手必须与其他 n-1 个选手各赛一次 ; 2. 每个选手一天只能赛一次 按此要求, 可将比赛日程表设计成一个 n 行 n-1 列的二维表, 其中, 第 i 行第 j 列表示和第 i 个选手在第 j 天比赛的选手 55

循环赛日程安排问题 按照分治的策略, 可将所有参赛的选手分为两部分,n=2 k 个选手的比赛日程表就可以通过为 n/2=2 k-1 个选手设计的比赛日程表来决定 递归地执行这种分割, 直到只剩下 2 个选手时, 比赛日程表的制定就变得很简单 : 只要让这 2 个选手进行比赛就可以了 56

循环赛日程安排问题 1 2 加 2 (a) 2 k (k=1) 个选手比赛 1 2 2 1 3 4 4 3 2 1 3 4 4 3 1 2 2 1 加 4 1 2 3 4 2 1 4 3 3 4 1 2 4 3 2 1 5 6 7 8 6 5 8 7 7 8 5 6 8 7 6 5 5 6 7 8 6 5 8 7 7 8 5 6 8 7 6 5 1 2 3 4 2 1 4 3 3 4 1 2 4 3 2 1 (b) 2 k (k=2) 个选手比赛 (c) 2 k (k=3) 个选手比赛 57

循环赛日程安排问题 显然, 这个求解过程是自底向上的迭代过程, 其中左上角和左下角分别为选手 1 至选手 4 以及选手 5 至选手 8 前 3 天的比赛日程, 据此, 将左上角部分的所有数字按其对应位置抄到右下角, 将左下角的所有数字按其对应位置抄到右上角, 这样, 就分别安排好了选手 1 至选手 4 以及选手 5 至选手 8 在后 4 天的比赛日程, 如图 (c) 所示 具有多个选手的情况可以依此类推 58

循环赛日程安排问题 这种解法是把求解 2 k 个选手比赛日程问题划分成依次求解 2 1 2 2 2 k 个选手的比赛日程问题 换言之,2 k 个选手的比赛日程是在 2 k-1 个选手的比赛日程的基础上通过迭代的方法求得的 59

循环赛日程安排问题 在每次迭代中, 将问题划分为 4 部分 : 1. 左上角 : 左上角为 2 k-1 个选手在前半程的比赛日程 ; 2. 左下角 : 左下角为另 2 k-1 个选手在前半程的比赛日程, 由左上角加 2 k-1 得到, 例如 2 2 个选手比赛, 左下角由左上角直接加 2 得到,2 3 个选手比赛, 左下角由左上角直接加 4 得到 ; 3. 右上角 : 将左下角直接抄到右上角得到另 2 k-1 个选手在后半程的比赛日程 ; 4. 右下角 : 将左上角直接抄到右下角得到 2 k-1 个选手在后半程的比赛日程 ; 60