/ Vijos / 讨论 / 分享 /

那个大侠能告诉我这道题怎样做~~

一笔画:编一个程序对给定的图进行一笔画。

分析:图的一笔画是指从图的某一个顶点出发,经过图中所有的边一次且仅一次。现由文本文件读入一个图的邻接矩阵,判断该图能否一笔画,若能,则给出一笔画的方法。

分析:一笔画是图论中研究得比较早的一个问题,一个图能够一笔画的条件是:

(1)该图是一个连通图;

(2)该图至多有2个度为奇数的点。

这里所说的"度"是指与一个点相连的边的数目,如果边的条数是奇数,则该点的度是奇数,否则是偶数。

在一笔画问题中,如果连通图所有的点的度均为偶数,则一笔画时可以从任意一点出发,最后又能回到起点。如果有两个点的度为奇数,则一笔画时,一定是从一个奇数度的点出发,最后到达另一个奇数度的点。此外,在连通图中,奇数度的点总是成对出现的。一笔画所经过的路线又叫欧拉路(如果是回路的话,也叫欧拉回路)。

找欧拉路(或回路)可以用Fleury算法,如下:

(1)找一个出发点P(如果图中有两个奇数度的点话,任取其一)。

(2)找一条与P相连的边,伸展欧拉路(选边的时候应注意,最后再选取断边;断边是:当去掉该边后使得图不连通的边)。

(3)将选出的边所连的另一个点取代P,去掉该边,重复(2),直至经过所有的边。

不要用过程和递归做

要用非递归

会的 把源程序 和 题解 发

1 条评论

  • 1