- 分享
- 2009-04-05 23:37:06 @
一笔画:编一个程序对给定的图进行一笔画。
分析:图的一笔画是指从图的某一个顶点出发,经过图中所有的边一次且仅一次。现由文本文件读入一个图的邻接矩阵,判断该图能否一笔画,若能,则给出一笔画的方法。
分析:一笔画是图论中研究得比较早的一个问题,一个图能够一笔画的条件是:
(1)该图是一个连通图;
(2)该图至多有2个度为奇数的点。
这里所说的"度"是指与一个点相连的边的数目,如果边的条数是奇数,则该点的度是奇数,否则是偶数。
在一笔画问题中,如果连通图所有的点的度均为偶数,则一笔画时可以从任意一点出发,最后又能回到起点。如果有两个点的度为奇数,则一笔画时,一定是从一个奇数度的点出发,最后到达另一个奇数度的点。此外,在连通图中,奇数度的点总是成对出现的。一笔画所经过的路线又叫欧拉路(如果是回路的话,也叫欧拉回路)。
找欧拉路(或回路)可以用Fleury算法,如下:
(1)找一个出发点P(如果图中有两个奇数度的点话,任取其一)。
(2)找一条与P相连的边,伸展欧拉路(选边的时候应注意,最后再选取断边;断边是:当去掉该边后使得图不连通的边)。
(3)将选出的边所连的另一个点取代P,去掉该边,重复(2),直至经过所有的边。
不要用过程和递归做
要用非递归
会的 把源程序 和 题解 发
1 条评论
-
铁筛菜 LV 8 @ 2009-04-05 23:37:07
用while也能写出来吧
- 1