资源简介
随机创建欧拉图+找寻欧拉回路,文档齐全,注释齐全易懂
代码片段和文件信息
// eulargraph.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
#include “stdio.h“
#include “stdlib.h“
#include “time.h“
#include “malloc.h“
//#include “stdbool.h“
#define n 204
int count;
//int m=0;
//int circuit[m];
int g[n+1][n+1];//用来存储节点之间关系的矩阵
int edgecount[n+1];//存储每个节点的度数
int random() //用来随机节点之间关系 0表示不相连,1表示相连
{
int k;
// printf(“Ten random numbers from 0 to 99nn\n“);
k=rand()%2;
return k;
}
int randomNode()//用来随机节点
{
int k;
// printf(“Ten random numbers from 0 to 99nn\n“);
k=rand()%n+1;
return k;
}
void adjacencyCount()//计算每一个节点邻接边的个数
{
int ij;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
edgecount[i]+=g[i][j];
}
void initGraph()//随机生成一个连通图,然后再生成欧拉图
{
int ij;
int s;
for(i=1;i<=n;i++)//先构造一个图
{
g[i][i]=0;
for(j=i+1;j<=n;j++)
{
s=random();
g[i][j]=g[j][i]=s;
}
}
adjacencyCount();
for(i=1;i<=n;i++)//把图变成连通图
{
if(edgecount[i]==0)
{
s=i;
while(s==i)
s=randomNode();//随机图中的节点 并相连
g[i][s] = g[s][i] = 1;
edgecount[i]++;
edgecount[s]++;
}
// adjacencyCount();
}
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
printf(“%d---->%d : %d\n“ijg[i][j]);
}
/*
以下为构造的欧拉图
如果该点v1的度数为奇数,则在后面再找一个度数为奇数的点v2
(一)如果v1和v2相连,而且如果他们的度数都大于1,则去掉他们的连边,否则继续寻找度数为奇数的节点
如果v1和v2没有相连,则相连v1和v2
(二)如果 (一) 失败了,既没有找到合适的点
1、则再找一度数为奇的点v3,和一个度数为偶的点v4,如果v4
和v1,v3没有相连,则在v4和v1,v4和v3之间加边。
2、(1)如果仍没有找到,则将该点与任意不相连的节点之间加边,重新执行变偶操作
(2)如果找不到与该点不相连的节点,在任意找度数大于2的节点,去掉他们的连边
*/
void eularGraph()//
{
int ijklm;
int v;//浪费了一部分空间
int retry = 0;
for(i=1;i<=n;i++)
{
printf(“%d%d\n“iedgecount[i]);
if(edgecount[i]%2!=0)//判断该点的度数是否为偶数
{
j=1;
for(j=i+1;j<=n;j++)//在相邻的节点中寻找度数为奇数的节点
{
if(edgecount[j]%2!=0)//从相邻的节点中找出度数为奇数的节点 (一)
{
if(g[i][j]) //节点之间是否存在边,不存在则连接这两个节点
{
if(edgecount[i]!=1&&edgecount[j]!=1)//判断i和j的节点的度数是否大于1,大于1则去掉邻边
{
g[i][j]=g[j][i]=0;
edgecount[i]--;
edgecount[j]--;
break;
}
else
{
continue;
}
}
else //不相连则连上
{
g[i][j] = g[j][i] =1;
edgecount[i]++;
edgecount[j]++;
break;
}
}
}
if(j>n) //没有找到合适的邻接点 (二)
{
// m = 0;
for(k=i+1;k<=n;k++) //(二) 1、则再找一度数为奇的点v3,1、和一个度数为偶的点v4,如果v4
// 和v1,v3没有相连,则在v4和v1,v4和v3之间加边。
{
if(edgecount[k]%2!=0)
{
v=k;
// m++;
break;
}
}
// l=0;
// while(l // {
for(k=1;k<=i;k++)//这个地方 (二) 1、
{
if(edgecount[k]%2==0)
{
if(!g[i][k]&&!g[k][v])
{
g[i][k] = g[k][i] = 1;
g[k][v] = g[v][k]=1;
edgecount[i]++;
edgecount[k]+=2;
edgecount[v]++;
// l=m;
break;
}
}
}
// l++;
// }
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2010-10-15 14:14 欧拉图问题\
文件 6052 2010-10-12 17:21 欧拉图问题\eular.cpp
文件 3603 2010-10-12 15:06 欧拉图问题\eular.cpp.bak
目录 0 2010-10-14 16:47 欧拉图问题\eulargraph\
目录 0 2010-10-13 16:06 欧拉图问题\eulargraph\Debug\
文件 188516 2010-10-13 15:56 欧拉图问题\eulargraph\Debug\eulargraph.exe
文件 212000 2010-10-13 15:56 欧拉图问题\eulargraph\Debug\eulargraph.ilk
文件 14093 2010-10-13 15:56 欧拉图问题\eulargraph\Debug\eulargraph.obj
文件 203788 2010-10-09 15:23 欧拉图问题\eulargraph\Debug\eulargraph.pch
文件 476160 2010-10-13 15:56 欧拉图问题\eulargraph\Debug\eulargraph.pdb
文件 2311 2010-10-09 15:23 欧拉图问题\eulargraph\Debug\StdAfx.obj
文件 41984 2010-10-13 15:56 欧拉图问题\eulargraph\Debug\vc60.idb
文件 53248 2010-10-13 15:56 欧拉图问题\eulargraph\Debug\vc60.pdb
文件 6939 2010-10-13 15:56 欧拉图问题\eulargraph\eulargraph.cpp
文件 4584 2010-10-09 14:27 欧拉图问题\eulargraph\eulargraph.dsp
文件 528 2010-10-09 14:27 欧拉图问题\eulargraph\eulargraph.dsw
文件 50176 2010-10-14 16:47 欧拉图问题\eulargraph\eulargraph.ncb
文件 48640 2010-10-14 16:47 欧拉图问题\eulargraph\eulargraph.opt
文件 1778 2010-10-13 15:56 欧拉图问题\eulargraph\eulargraph.plg
文件 1232 2010-10-09 14:27 欧拉图问题\eulargraph\ReadMe.txt
文件 297 2010-10-09 14:27 欧拉图问题\eulargraph\StdAfx.cpp
文件 769 2010-10-09 14:27 欧拉图问题\eulargraph\StdAfx.h
文件 23552 2010-10-09 10:48 欧拉图问题\欧拉回路.doc
文件 27136 2010-10-09 11:02 欧拉图问题\欧拉回路C++.doc
文件 61952 2010-10-09 11:00 欧拉图问题\随机建立欧拉图.doc
- 上一篇:labview十六进制转换成浮点数
- 下一篇:cad查件统计数量
相关资源
- LL1文法的判别以及非LL1文法的转换完
- Delphi 校园银行管理系统 可运行
- 50元 flash 小游戏 源代码 可运行 as3.
- 人脸识别系统源代码 可运行
- 数据压缩算法的实现代码可运行
- OMNeT++ 5.1 leach 可运行
- 基于Socket的网络通信大作业 含可运行
- shamirmn门限共享方案
- DFA的最小化 完整可运行代码
- 正规文法转正规式+正规式NFA完整可运
- 可运行的AES源代码
- Linux2048详细注释版-验证可运行
- Qt QRCode生成二维码,完整代码可运行
- LabelImg可运行版本
- 电脑鼠最终代码可运行
- A*算法解决传教士与野人过河问题可运
- PSCAD电阻型超导限流器数学模型可运行
- 自动删除N时刻前的文件日志,代码包
- 车辆管理系统(vc下可运行)
- ios实现打地鼠的简单版游戏源码加注
- Spring AMQP 集成完整代码,可运行
- 二维码、支持delphi7、源码可运行
- Redis4.0.1绿色解压即可运行
- 文件系统的详细分析FAT16—32资料和
- 智能微电网中利用粒子群算法实现多
- 离散数学实验4:欧拉图的判定并输出
- 构造欧拉图与找欧拉回路的算法
- LuaJIT for windows可运行版本
- S3C2440裸机读写SD卡可调试可运行
- 安卓应用市场源码,绝对可运行
评论
共有 条评论