数学建模社区-数学中国
标题:
急求一个Fleury
[打印本页]
作者:
xinzhiyong
时间:
2009-7-17 10:26
标题:
急求一个Fleury
急求一个Fleury算法,求高手来个程序
作者:
lyyy
时间:
2009-7-17 12:23
网上有一些程序代码。
作者:
小旋风假
时间:
2009-8-23 08:57
没有看懂………………
作者:
夕夕多
时间:
2010-5-8 22:58
#include <stdio.h>
5 c# Q R8 ]1 P! r, j( H
#include <string.h>
9 D0 Q" B0 ]5 h& W( b2 J$ ^
struct stack
5 E( @5 n4 p j/ m
{int top , node[210];} f; //顶点的堆栈
2 _- D: ^, z9 k# F K
int a[201][201]; //图的邻接矩阵
' ~3 j/ v/ f& t, d. d& @# u: l# z
int n;
I, g7 d8 Y/ {/ x% q7 i/ y" J U
void dfs(int x) //图的深度优先遍历
5 j* ?+ V- x) V) z( q' O8 [
{int i;
( Q, x4 k& j% v
f.top ++; f.node[f.top] = x;
: }$ S- g9 Y" j2 y0 M. m% t
for (i = 1; i <= n; i ++)
* T( ^ |( U1 i) r
if (a[i][x] > 0)
/ L5 M! u- @8 a
{ a[i][x] = 0; a[x][i] = 0; //删除此边
. m' X, Q1 r1 M9 b
dfs(i);
$ N; t, L7 ^ ?* }& `
break; }
4 q& ~6 ^! L' l; n# p5 p/ H) r
}
2 q/ y W% k9 M
void Euler(int x) //欧拉路算法
( G7 i0 M$ J" U+ X2 H4 f0 M
{int i , b;
. A; M: ^& |% d$ I" S
f.top = 0; f.node[f.top] = x; //入栈
4 y3 S& n8 K* \2 w& f) j' z$ u# V' i
while (f.top >= 0)
) E" A. s5 y; i5 G& K+ ?3 K- T
{b = 0;
$ V: |% V4 N" n4 e1 f5 a
for (i = 1; i <= n; i ++)
4 b, g( A8 m0 y
if (a[f.node[f.top]][i] > 0)
( I9 X) y7 k8 f) p# f
{b = 1; break;}
2 A" I+ g! I. B! C
if (b == 0) //如果没有点可以扩展,输出并出栈
1 p' |8 c2 }% r1 r
{ printf("%d " , f.node[f.top]);
. B# g9 E3 v3 c+ I; N2 u
f.top --;}
+ Z% F/ S. Y" J* E, r% [4 \! p" k; a
else {f.top --; dfs(f.node[f.top+1]);} //如果有,就DFS
: n! I m! h, }7 u. v
}
9 t$ d: b# M6 X, ]9 u
}
9 ~0 K& p% j! V9 B# c! W
int main()
& W! T7 x6 f' L. k& l
{
( A5 O/ C! b# u1 S, h2 |# U
int m , s , t , num , i , j , start;
; P/ m( |! b W C7 C2 Z2 K. p
//input
5 ^4 Q2 v1 a; o8 N! \* t
scanf("%d %d" , &n , &m); //n顶点数 m边数
& B0 L# `5 L# M" J
memset(a , 0 , sizeof(a));
% \7 v. E& ~ {' \
for (i = 0; i < m; i ++)
; S. F* J. E& D4 U$ C' c8 s
{printf("innput s,t");
& J) t( \! g6 S. R" Y. j: y
scanf("%d %d" , &s , &t);
5 _, l T8 g+ f, w7 ^
a[s][t] = 1; a[t][s] = 1;
3 o" j2 c: \% z% D1 I0 w9 w
}
0 | m4 E' X2 e$ U1 l. C! ~/ X; k
//判断是否存在欧拉回路
* _% [: \% }' \
s = 0; start = 1;
5 w' m0 F" k$ _9 M
for (i = 1; i <= n; i ++)
* c4 I- n0 m/ V* M/ g0 K; k. K. |5 G
{num = 0;
+ J/ Q1 L9 U% d
for (j = 1; j <= n; j ++)
: j ?5 D" Q3 M+ x- h
num += a[i][j];
6 p( k% a% R# A' x8 c4 J
if (num % 2 == 1)
9 I! w, R0 E/ t/ L3 A
{start = i; s ++;}
2 _, c$ H0 e% e% S
}
" C. |; {- C) O, v# z+ R: q9 J7 a
if ((s == 0) || (s == 2))
5 W. U2 g0 E C, a' @
Euler(start);
% `4 `3 k2 j+ k& G/ j
else printf("No Euler path\n");
3 K+ t) M& i8 n
getchar(); getchar();
$ @1 E3 I) y. z5 R
return 0; }
作者:
parkshinyang
时间:
2012-7-9 00:28
诶 有么有 matlab版的
作者:
屋顶风影
时间:
2013-7-28 22:06
没有matlab版本的吗
- X1 V/ ]8 |7 }/ W1 a8 f
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5