[信管网]运筹学匈牙利算法示例

合集下载

运筹学匈牙利法

运筹学匈牙利法

运筹学匈牙利法运筹学匈牙利法(Hungarian Algorithm),也叫匈牙利算法,是解决二部图最大(小)权完美匹配(也称作二分图最大权匹配、二分图最小点覆盖)问题的经典算法,是由匈牙利数学家Kuhn和Harold W. Kuhn发明的,属于贪心算法的一种。

问题描述在一个二分图中,每个节点分别属于两个特定集合。

找到一种匹配,使得所有内部的节点对都有连边,并且找到一种匹配方案,使得该方案的边权和最大。

应用场景匈牙利算法的应用场景较为广泛,比如在生产调度、货车调度、学生对导师的指定、电影的推荐等领域内,都有广泛的应用。

算法流程匈牙利算法的伪代码描述如下:进行循环ɑ、选择一点未匹配的点a作为起点,它在二分图的左边β、找出a所有未匹配的点作为下一层节点ɣ、对下一层的每个节点,如果它在右边未匹配,直接匹配ɛ、如果遇到一个已经匹配的节点,进入下一圈,考虑和它匹配的情况δ、对已经匹配的点,将它已经匹配的点拿出来,作为下一层节点,标记这个点作为已被搜索过ε、将这个点作为当前层的虚拟点,没人配它,看能否为它找到和它匹配的点ζ、如果能匹配到它的伴侣,令它们成对被匹配最后输出最大权匹配。

算法优缺点优点:相比于暴力求解二分图最大权匹配来说,匈牙利算法具有优秀的解决效率和高效的时间复杂度,可以在多项式时间(O(n^3))内解决二分图最大权匹配问题。

缺点:当二分图较大时,匈牙利算法还是有很大的计算复杂度,复杂度不佳,算法有效性差。

此时就需要改进算法或者使用其他算法。

总结匈牙利算法是一个常见的解决二分图最大权匹配问题的算法,由于其简洁、易用、效率优秀等特性,广泛应用于学术和实际问题中。

匈牙利算法虽然在处理较大规模问题时效率不佳,但仍然是一种值得掌握的经典算法。

匈牙利算法 描述

匈牙利算法 描述

匈牙利算法一、算法概述匈牙利算法是一种解决二分图最大匹配问题的经典算法,由匈牙利数学家DénesKőnig于1931年提出。

二分图是指图中的节点可以分为两个互不相交的集合,并且图中的边只能连接两个集合中的节点。

最大匹配问题是在二分图中找到最大的边集合,使得每个节点都只与一条边相连。

匈牙利算法通过不断寻找增广路径来寻找最大匹配。

增广路径是指一条路径,其起点和终点都不属于当前的匹配边集合,并且路径中的边交替属于匹配边和非匹配边。

通过不断寻找增广路径,匈牙利算法可以将非匹配边转化为匹配边,从而逐步增大匹配边集合的大小,直到无法找到增广路径为止。

二、算法步骤匈牙利算法的基本思路是通过深度优先搜索来寻找增广路径。

具体步骤如下:1. 初始化将所有节点的匹配状态设为未匹配。

2. 寻找增广路径从一个未匹配节点开始,进行深度优先搜索,寻找增广路径。

在搜索过程中,每次选择一个未匹配的邻接节点进行继续搜索,直到找到一条增广路径或者无法继续搜索为止。

3. 更新匹配边集合如果找到了增广路径,就将路径中的非匹配边转化为匹配边,同时将原来的匹配边转化为非匹配边。

然后回到第2步,继续寻找下一个增广路径。

4. 输出最大匹配当无法找到增广路径时,算法结束。

此时,最大匹配就是匹配边集合中的边。

三、算法示例为了更好地理解匈牙利算法,下面以一个具体的示例来说明。

假设有一个二分图,左侧的节点集合为A,右侧的节点集合为B,边集合为E。

图中的边表示两个节点之间的关系。

A = {a1, a2, a3}B = {b1, b2, b3}E = {(a1, b1), (a1, b2), (a2, b1), (a3, b2), (a3, b3)}初始时,所有节点的匹配状态都为未匹配。

1. 寻找增广路径从一个未匹配的节点开始,进行深度优先搜索,寻找增广路径。

假设从节点a1开始,我们找到了一条增广路径:a1-b1-a2-b2-a3。

2. 更新匹配边集合将路径中的非匹配边转化为匹配边,同时将原来的匹配边转化为非匹配边。

匈牙利算法

匈牙利算法

匈牙利算法本文讲述的是匈牙利算法,即图论中寻找最大匹配的算法,暂不考虑加权的最大匹配(用KM 算法实现),文章整体结构如下:1.基础概念介绍2.算法的实现一. 部分基础概念的介绍概念点1. 图G的一个匹配是由一组没有公共端点的不是圈的边构成的集合。

这里,我们用一个图来表示下匹配的概念:如图所示,其中的三条边即该图的一个匹配;所以,匹配的两个重点:1. 匹配是边的集合;2. 在该集合中,任意两条边不能有共同的顶点。

那么,我们自然而然就会有一个想法,一个图会有多少匹配?有没有最大的匹配(即边最多的匹配呢)?我们顺着这个思路,继续往下走。

概念点2. 完美匹配:考虑部集为X={x1 ,x2, ...}和Y={y1, y2, ...}的二部图,一个完美匹配就是定义从X-Y的一个双射,依次为x1, x2, ... xn找到配对的顶点,最后能够得到 n!个完美匹配。

这里有一个概念,有点陌生,即什么是二部图,这个其实很好理解,给定两组顶点,但是组内的任意两个顶点间没有边相连,只有两个集合之间存在边,即组1内的点可以和组2内的点相连,这样构建出来的图就叫做二部图(更好理解就是n个男人,n个女人,在不考虑同性恋的情况下,组成配偶)。

这样是不是简单多了?既然说到了双双组成配偶,那我们干的就是月老做的活了,古话说得好,宁拆一座庙,不毁一桩婚,如果真的给出n个帅气的男孩,n个漂亮的女孩,他们之间互相有好感,但一个男孩可以对多个女孩有感觉,一个女孩也可能觉得多个男孩看起来都不错,在这种情况下,我们怎么让他们都能成双成对呢?将这个问题抽象出来,互有好感就是一条条无向边(单相思我们先不考虑),而男孩和女孩就是一个个节点,我们构建出这么一个图,而完美匹配就是让所有看对眼的男孩和女孩都能够在一起。

完美匹配是最好的情况,也是我们想要的情况。

当然,有些情况下我们做不到完美匹配,只能尽可能实现最多的配对,这个就叫做最大匹配。

可以看出来,完美匹配一定是最大匹配,而最大匹配不一定是完美匹配。

匈牙利算法详细步骤例题

匈牙利算法详细步骤例题

匈牙利算法详细步骤例题
嘿,朋友们!今天咱就来讲讲这神奇的匈牙利算法。

你可别小瞧它,这玩意儿在好多地方都大有用处呢!
咱先来看个具体的例子吧。

就说有一堆任务,还有一堆人,要把这
些任务分配给这些人,怎么分才能最合理呢?这时候匈牙利算法就闪
亮登场啦!
第一步,咱得弄个表格出来,把任务和人之间的关系都给标上。


如说,这个人干这个任务合适不合适呀,合适就标个高分,不合适就
标个低分。

这就好像给他们牵红线似的,得找到最合适的搭配。

然后呢,开始试着给任务找人。

从第一个任务开始,找个最合适的人。

要是这个人还没被别的任务占着,那太好了,直接就配对成功啦!要是已经被占了呢,那就得看看能不能换一换,让大家都更合适。

就好比是跳舞,你得找到最合适的舞伴,跳起来才带劲嘛!要是随
便找个人就跳,那多别扭呀。

这中间可能会遇到一些麻烦,比如好几个人都对同一个任务感兴趣,那可咋办?这就得好好琢磨琢磨啦,得权衡一下,谁更合适。

有时候你会发现,哎呀,怎么这么难呀,怎么都找不到最合适的搭配。

别急别急,慢慢来,就像解一道难题一样,得一点点分析。

咱再说说这算法的奇妙之处。

它就像是一个聪明的红娘,能把最合适的任务和人牵到一起。

你想啊,要是没有它,那咱不得乱点鸳鸯谱呀,那可不行,得把资源都好好利用起来才行呢。

比如说,有五个任务,五个。

匈牙利算法例题

匈牙利算法例题

匈牙利算法例题【最新版】目录1.匈牙利算法简介2.匈牙利算法例题介绍3.匈牙利算法例题解答过程4.匈牙利算法例题解答结果正文一、匈牙利算法简介匈牙利算法(Hungarian algorithm)是一种求解无向图最大匹配问题的经典算法,由匈牙利数学家 MátyásVink 于 1930 年提出。

匈牙利算法采用贪心策略,通过不断迭代寻找图中的匹配点对,最终找到一个最大匹配子图。

它适用于无权无向图,特别是当图中每个顶点的度数为偶数时,它能够保证找到一个完美的匹配。

二、匈牙利算法例题介绍现在,我们通过一个具体的例题来介绍匈牙利算法的应用。

例题:有一个无向图,共有 4 个顶点 A、B、C、D,边数为 6,分别为 AB、AC、AD、BC、BD、CD。

请问这个图的最大匹配数是多少?三、匈牙利算法例题解答过程1.初始化:将所有顶点的度数设为偶数,用 0 表示已匹配的边,用 1 表示未匹配的边。

A: 0 0B: 1 1C: 1 1D: 1 12.寻找匹配点对:从度数为奇数的顶点开始,找到可以匹配的边。

在这个例子中,顶点 A 和 D 的度数为奇数,所以将边 AD 标记为已匹配。

A: 1 0B: 1 1C: 1 1D: 0 13.更新顶点度数:将已匹配的边的度数更新为偶数,未匹配的边的度数减 1。

A: 1 0B: 0 1C: 1 1D: 1 14.重复步骤 2 和 3,直到所有顶点的度数都为偶数。

在这个例子中,最终匹配的边为 AB、AC、AD,所以最大匹配数为 3。

匈牙利算法——精选推荐

匈牙利算法——精选推荐

匈⽛利算法0 - 相关概念0.1 - 匈⽛利算法 匈⽛利算法是由匈⽛利数学家Edmonds于1965年提出,因⽽得名。

匈⽛利算法是基于Hall定理中充分性证明的思想,它是⼆部图匹配最常见的算法,该算法的核⼼就是寻找增⼴路径,它是⼀种⽤增⼴路径求⼆分图最⼤匹配的算法。

0.2 - ⼆分图 若图G的结点集合V(G)可以分成两个⾮空⼦集V1和V2,并且图G的任意边xy关联的两个结点x和y分别属于这两个⼦集,则G是⼆分图。

1 - 基本思想1. 找到当前结点a可以匹配的对象A,若该对象A已被匹配,则转⼊第3步,否则转⼊第2步2. 将该对象A的匹配对象记为当前对象a,转⼊第6步3. 寻找该对象A已经匹配的对象b,寻求其b是否可以匹配另外的对象B,如果可以,转⼊第4步,否则,转⼊第5步4. 将匹配对象b更新为另⼀个对象B,将对象A的匹配对象更新为a,转⼊第6步5. 结点a寻求下⼀个可以匹配的对象,如果存在,则转⼊第1步,否则说明当前结点a没有可以匹配的对象,转⼊第6步6. 转⼊下⼀结点再转⼊第1步2 - 样例解析 上⾯的基本思想看完肯定⼀头雾⽔(很⼤程度是受限于我的表达能⼒),下⾯通过来就匈⽛利算法做⼀个详细的样例解析。

2.1 - 题⽬⼤意 农场主John有N头奶⽜和M个畜栏,每⼀头奶⽜需要在特定的畜栏才能产奶。

第⼀⾏给出N和M,接下来N⾏每⾏代表对应编号的奶⽜,每⾏的第⼀个数值T表⽰该奶⽜可以在多少个畜栏产奶,⽽后的T个数值为对应畜栏的编号,最后输出⼀⾏,表⽰最多可以让多少头奶⽜产奶。

2.1 - 输⼊样例5522532342153125122.2 - 匈⽛利算法解题思路2.2.1 - 构造⼆分图 根据输⼊样例构造如下⼆分图,蓝⾊结点表⽰奶⽜,黄⾊结点表⽰畜栏,连线表⽰对应奶⽜能在对应畜栏产奶。

2.2.2 - 模拟算法流程为结点1(奶⽜)分配畜栏,分配畜栏2(如图(a)加粗红边所⽰)为结点2(奶⽜)分配畜栏,由于畜栏2已经被分配给结点1(奶⽜),所以寻求结点1(奶⽜)是否能够分配别的畜栏,以把畜栏2腾给结点2(奶⽜)。

《管理运筹学》分配问题与匈牙利算法

《管理运筹学》分配问题与匈牙利算法

2019/9/10
第 12页
第4章 整数规划与分配问题
4 5 4 ◎ √
◎ 1 Ø 4
2 ◎ 4 3
3
7
1
Ø



3 4 3 ◎
◎ 1 Ø 5
2 ◎ 4 4
2
6
0
Ø

3 4
◎ 1 2 ◎ 2 6
3 ◎
Ø 5
4 4

Ø

得到4个独立零元素, 所以 最优解矩阵为:

7
8
11
9

-7
运筹学
0 13 11 2
6 0 10 11
0 5 7 4
0 1
4
2

2019/9/10
第 6页
第4章 整数规划与分配问题
运筹学
0 13 11 2
6 0 10 11
0 5 7 4
0
1
4
2

-0 -0 -4 -2
0 13 7 0 6 0 6 9 0 5 3 2 0 1 0 0
2019/9/10
第 11页
第4章 整数规划与分配问题
运筹学
第三步,作最少的直线覆盖所有0元素:
4 5 4 ◎ √
◎ 1 Ø 4
2 ◎ 4 3
3
7
1
Ø



独立零元素的个数m等于最少直线数l,即l=m=3<n=4;
第四步,变换矩阵(bij)以增加0元素:没有被直线覆盖的所有元素中的最小元素为1,然后 打√各行都减去1;打√各列都加上1,得如下矩阵,并转第二步进行试指派:
第4章 整数规划与分配问题

数学建模匈牙利算法

数学建模匈牙利算法

数学建模匈牙利算法
【最新版】
目录
一、匈牙利算法的概念与基本原理
二、匈牙利算法的应用实例
三、匈牙利算法的优缺点
正文
一、匈牙利算法的概念与基本原理
匈牙利算法(Hungarian algorithm)是一种求解二分图最大匹配问题的算法,由匈牙利数学家 Mátyásovszky 于 1937 年首次提出。

该算法的基本思想是:通过不断循环寻找图中的偶数长度路径,并将路径中的顶点依次匹配,直到找不到这样的路径为止。

此时,图中的所有顶点都已匹配,即得到了二分图的最大匹配。

二、匈牙利算法的应用实例
匈牙利算法广泛应用于任务分配、资源调度、数据融合等领域。

下面举一个简单的例子来说明匈牙利算法的应用。

假设有 5 个工人和 8 个任务,每个工人完成不同任务的效率不同。

我们需要为每个任务分配一个工人,使得总效率最大。

可以用一个二分图来表示这个问题,其中顶点分为两类:工人和任务。

边表示任务与工人之间的效率关系。

匈牙利算法可以用来求解这个问题,找到最优的任务分配方案。

三、匈牙利算法的优缺点
匈牙利算法的优点是简单、高效,可以解决二分图的最大匹配问题。

然而,它也存在一些缺点:
1.匈牙利算法只能解决无向图的匹配问题,对于有向图,需要将其转
换为无向图才能使用匈牙利算法。

2.当图中存在环时,匈牙利算法无法找到最大匹配。

这时需要使用其他算法,如 Euclidean algorithm(欧几里得算法)来解决。

3.匈牙利算法在实际应用中可能存在数值稳定性问题,即在计算过程中可能出现精度误差。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

0 0 1 0
0 0 1 1 0 0 0 0 0 0 1 0
例二、 有一份中文说明书,需译成英、日、德、俄四种 文字,分别记作A、B、C、D。现有甲、乙、丙、丁四 人,他们将中文说明书译成不同语种的说明书所需时 间如下表所示,问如何分派任务,可使总时间最少?
任务
人员
用匈牙利法求解下列指派问题,已知效率矩 阵分别如下:
7 13 15 11
9 10 12 12 16 17 16 14 15 12 15 16
3 8 8 7 6 4 8 4 9 10
2 10 2 2 2 6 9 7 3 9
3 7 5 5 10
第三步:作最少的直线覆盖所有0元素。 (1)对没有◎的行打√号; (2)对已打√号的行中所有含Ø元素的列打√号; (3)再对打有√号的列中含◎ 元素的行打√号;
(4)重复(2),(3)直到得不出新的打√号的行、列为止; (5)对没有打√号的行画横线,有打√号的列画纵线, 这就得到覆盖所有0元素的最少直线数 l 。l 应等于m, 若不相等,说明试指派过程有误,回到第二步(4),另 行试指派;若 l=m < n,须再变换当前的系数矩阵, 以找到n个独立的0元素,为此转第四步。 第四步:变换矩阵(bij)以增加0元素。 在没有被直线覆盖的所有元素中找出最小元素,然后 打√各行都减去这最小元素;打√各列都加上这最小元 素(以保证系数矩阵中不出现负元素)。新系数矩阵 的最优解和原问题仍相同。转回第二步。
4 ◎ 2 3
4 ◎ √ Ø 4 1 ◎ 4 3 √ 7 1 Ø √ 5
3 ◎ 2 2
3 ◎ 1 Ø 5 ◎ 4 4 6 0 Ø 4
3 4 0 1 2 0 2 6
0 1 0 0 0 0 1 0
3 0 0 5 4 4 0 0
28
此问题有多个最优解
◎ 0 1 3 2 0 Ø
Ø 0
3
Ø 0
◎ 0
Ø 0
6 2

2
Ø 0
0 4
2 4
3
◎ 0
3 ◎ 0 3 Ø 0 6
0 Ø 1 3 2 ◎ 0
Ø
0 6 2
3
Ø 0
◎ 0

0 2
Ø 0

0 4
2 4
3
Ø 0
3 ◎ 0 3 Ø 0 6 -1ຫໍສະໝຸດ -22 2 4 4 0
0 4 2 4 5 0 3 0 1 0 1 3 0 3 5 1 2 3 0 5
2 2 4 4 ◎ 0

0 4 2 4 5 Ø 3 ◎ 0 0 1 ◎ 1 3 0 Ø 3 5 1 0 Ø 2 3 0 5
A
6 4 3
B
7 5 1
C
11 9 10
D
2 8 4
甲 乙 丙

5
9
8
2
求解过程如下:
第一步,变换系数矩阵:
6 4 (c ij ) 3 5 7 11 2 2 4 5 9 8 1 10 4 1 9 8 2 2
4 0 2 3
第二步,试指派:
第三步,作最少的直线覆盖所有0元素:
4 ◎ 2 3 4 ◎ √ 1 Ø 4 ◎ 4 3 √ 7 1 Ø √ 5
独立零元素的个数m等于最少直线数l,即l=m=3<n=4; 第四步,变换矩阵(bij)以增加0元素:没有被直线 覆盖的所有元素中的最小元素为1,然后打√各行都减 去1;打√各列都加上1,得如下矩阵,并转第二步进 行试指派:
√ √
√ √ √ √

l =m=4 < n=5
1 2 4 3 ◎ 0

0 3 1 3 6 ◎ 3 Ø 0 0 2 Ø 1 3 0 Ø 2 4 ◎ 0 0 3 3 Ø 5 0
√ √
√ √ √ √
0 1 3 2 0
0 3 0 3 6 0 2 0 2 0 0 3 0 2 3 0 4 4 0 6
(4)若仍有没有划圈的0元素,且同行(列)的0元素至 少有两个,则从剩有0元素最少的行(列)开始,比较这 行各0元素所在列中0元素的数目,选择0元素少的那列 的这个0元素加圈(表示选择性多的要“礼让”选择性 少的)。然后划掉同行同列的其它0元素。可反复进行, 直到所有0元素都已圈出和划掉为止。
(5)若◎ 元素的数目m 等于矩阵的阶数n,那么这指 派问题的最优解已得到。若m < n, 则转入下一步。
匈牙利算法示例
信管网():最专业信息系统项目管理师网站
(二)、解题步骤: 指派问题是0-1 规划的特例,也是运输问题的特例, 当然可用整数规划,0-1 规划或运输问题的解法去求 解,这就如同用单纯型法求解运输问题一样是不合算 的。利用指派问题的特点可有更简便的解法,这就是 匈牙利法,即系数矩阵中独立 0 元素的最多个数等于 能覆盖所有 0 元素的最少直线数。
0 0 0 1 1 0 0 0
15
3 ◎ 2 2
3 ◎ Ø 5 1 ◎ 4 4 6 ◎ Ø 4
得到4个独 立零元素, 所以最优解 矩阵为:
练习:
费 工作 用 人员
A
7
B
5
C
9
D
8
E
11


丙 丁 戊
9
8 7 4
12
5 3 6
7
4 6 7
11
6 9 5
2 2 4 4 ◎ 0

0 4 2 4 5 Ø 3 ◎ 0 0 1 ◎ 1 3 0 Ø 3 5 1 0 Ø 2 3 0 5


√ l =m=4 < n=5
2 2 4 4 ◎ 0

0 4 2 4 5 Ø 3 ◎ 0 0 1 ◎ 1 3 0 Ø 3 5 1 0 Ø 2 3 0 5
5 9 0 1 5 4 0 9 3 7 6 0 -5
4 0 2 3
5 4 0 1 0 4 0 4 3 7 1 0
4 ◎ 2 3
4 ◎ 1 Ø 4 ◎ 4 3 找到 3 个独立零元素 Ø 但 m = 3 < n = 4 7 1 5
第一步:变换指派问题的系数矩阵(cij )为(bij),使 在(bij)的各行各列中都出现0元素,即 (1) 从(cij)的每行元素都减去该行的最小元素; (2) 再从所得新系数矩阵的每列元素中减去该列的最 小元素。
第二步:进行试指派,以寻求最优解。 在(bij)中找尽可能多的独立0元素,若能找出n个独 立0元素,就以这n个独立0元素对应解矩阵(xij)中的元 素为1,其余为0,这就得到最优解。找独立0元素,常 用的步骤为: (1)从只有一个0元素的行(列)开始,给这个0元素加 圈,记作◎ 。然后划去◎ 所在列(行)的其它0元素,记 作Ø ;这表示这列所代表的任务已指派完,不必再考 虑别人了。 (2)给只有一个0元素的列(行)中的0元素加圈,记作 ◎;然后划去◎ 所在行的0元素,记作Ø . (3)反复进行(1),(2)两步,直到尽可能多的0元素都 被圈出和划掉为止。

0 1 3 2 0
0 3 0 3 6 0 2 0 2 0 0 3 0 2 3 0 4 4 0 6
Ø 0 1 3 2 ◎ 0

0 3 0 3 Ø ◎ 6 0 2 Ø 0 Ø ◎ 2 0 0 3 Ø 2 3 ◎ 0 0 Ø 4 4 0 6
9
8 6 11
7 9 8 7 4
5 9 8 11 5 7 12 7 11 9 5 4 6 94 3 6 9 63 6 7 5 11 4
2 2 4 4 0
0 4 3 6 5 0 4 2 1 0 2 5 0 3 6 3 2 3 1 7

0 3 1 3 √ √ 6 ◎ 3 Ø 0 0 2 Ø 1 3 √ 0 √ Ø 2 4 ◎ 0 0 3 3 Ø 5 0
√ √

1 2 4 3 ◎ 0

0 3 1 3 6 ◎ 3 Ø 0 0 2 Ø 1 3 0 0 0 Ø 2 4 ◎ 3 3 Ø 5 0
0 13 11 2 6 0 10 11 0 5 7 4 0 1 4 2
4 2
0 13 7 0 6 0 6 9 0 5 3 2 0 1 0 0
Ø 0 0 13 7 ◎ 6 0 6 9 ◎ ◎ 0 5 3 2 ◎ Ø 0 0 1 0 Ø
例一:
任务
人员
A 2
10 9 7
B 15
4 14 8
C 13
14 16 11
D 4
15 13 9

乙 丙 丁
2 10 9 7
15 13 4 4 14 15 14 16 13 8 11 9
2 4
9
7
0 13 11 2 6 0 10 11 0 5 7 4 0 1 4 2
1 2 4 3 0
0 3 1 3 6 0 3 0 2 0 1 3 0 2 4 0 3 3 0 5
1 2 4 3 0
0 3 1 3 6 0 3 0 2 0 1 3 0 2 4 0 3 3 0 5
1 2 4 3 ◎ 0
相关文档
最新文档