资源简介
用C++实现的代码,求AOE网络的关键路径,有详细注释
代码片段和文件信息
#include
#include
using namespace std;
class AOE//AOE类
{
private:
int Num_Vex;//节点个数
int Num_Ace;//路径数目
char *Vex;//节点名称
int * *Matrix;//有向路径矩阵
int *Ve;//Ve数组
int *Vl;//Vl数组
int sum;//最短工期
public:
AOE(int nint m)//构造函数,为指针开辟内存
{
Num_Vex=n;
Num_Ace=m;
sum=0;
Vex=new char[Num_Vex+1];
Matrix=new int *[Num_Vex+1];
for(int i=0;i<=Num_Vex;i++)
Matrix[i]=new int[Num_Vex+1];//为Matrix矩阵开辟内存
Ve=new int[Num_Vex+1];
Vl=new int[Num_Vex+1];
}
~AOE()//析构函数
{
;
}
void Input_Data()//输入数据
{
cout<<“Please input the vertex“< for(int i=1;i<=Num_Vex;i++)
cin>>Vex[i];//依次读入节点名称
getchar();//清空,防止对下面读入数据产生影响
cout<<“Please input the infomation between two vertex“< for(int i=1;i<=Num_Ace;i++)
{
int mnweight;
cin>>m>>n;//读入某条边的两个端点
cin>>weight;//读入有向权值
Matrix[m][n]=weight;//将权值置入对应矩阵,m表示起点,n表示终点
}
}
void Init_Data()//初始化数据
{
for(int i=0;i<=Num_Vex;i++)
for(int j=0;j<=Num_Vex;j++)
Matrix[i][j]=0;//之前将矩阵所有元素赋值为0
for(int i=0;i<=Num_Vex;i++)
Vex[i]=‘0‘;//初始化节点数组
for(int i=1;i<=Num_Vex;i++)
Ve[i]=0;//Ve数组初始化为0
}
void Create_Path()//构建关键路径,求各个节点的Ve和Vl
{
for(int i=1;i<=Num_Vex;i++)
for(int j=1;j<=Num_Vex;j++)
if(Matrix[i][j]!=0)//矩阵中某个位置不为0,说明从i节点到j节点有路径
if(Ve[i]+Matrix[i][j]>Ve[j])
Ve[j]=Ve[i]+Matrix[i][j];//发现对于节点j有更早的开始时间,修改
for(int i=1;i<=Num_Vex;i++)
Vl[i]=Ve[Num_Vex];//初始化Vl数组,每个都初始化为Ve[Num_Vex]
for(int i=Num_Vex;i>=1;i--)
for(int j=1;j<=Num_Vex;j++)
if(Matrix[i][j]!=0)//矩阵中某个位置不为0,说明从i节点到j节点有路径
if(Vl[i]>Vl[j]-Matrix[i][j])
Vl[i]=Vl[j]-Matrix[i][j];//发现对于节点j有更晚的结束时间,修改
}
void Count_Path()//求关键路径
{
int el;
cout<<“The result is“< for(int i=1;i<=Num_Vex;i++)
{
e=Ve[i];//e等于某事件开始节点对应的Ve
for(int j=1;j<=Num_Vex;j++)
{
if(Matrix[i][j]!=0)//矩阵中某个位置不为0,说明从i节点到j节点有路径
{
l=Vl[j]-Matrix[i][j];//l等于某事件结束节点对应的Vl减去完成该事件用去的时间
if(e==l)//如果e等于l,那么这个事件的路径就是关键路径的一部分
cout<<“(“< }
}
}
cout< }
void Print_Result()//打印结果
{
cout<<“The matrix is“< for(int i=1;i<=Num_Vex;i++)
{
for(int j=1;j<=Num_Vex;j++)
cout< cout< }
cout<<“The Ve is“< for(int i=1;i<=Num_Vex;i++)
cout< cout<
cout<<“The Vl is“< for(int i=1;i<=Num_Vex;i++)
cout< cout< }
void Perform()//执行函数
{
Init_Data();//初始化
Input_Data();//输入数据
Create_Path();//求Ve和Vl
Print_Result();//打印结果
Count_Path();//求关键路径
}
};
int main()
{
int nm;
cout<<“Please input the number of vertexs and edges for AOE net“< cin>>n>>m;
AOE aoe(nm);//构造AOE类的对象aoe
aoe.Perform();//执行
aoe.~AOE();
system(“pause“);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-06-10 09:30 AOE网络关键路径\
目录 0 2012-06-10 09:30 AOE网络关键路径\AOE网络关键路径\
文件 6639616 2012-05-30 15:58 AOE网络关键路径\AOE网络关键路径.sdf
文件 930 2012-05-12 19:22 AOE网络关键路径\AOE网络关键路径.sln
文件 9728 2012-05-30 15:58 AOE网络关键路径\AOE网络关键路径.suo
文件 3364 2012-05-19 20:20 AOE网络关键路径\AOE网络关键路径\AOE网络关键路径.cpp
文件 3948 2012-05-12 20:43 AOE网络关键路径\AOE网络关键路径\AOE网络关键路径.vcxproj
文件 959 2012-05-12 20:43 AOE网络关键路径\AOE网络关键路径\AOE网络关键路径.vcxproj.filters
文件 143 2012-05-12 19:22 AOE网络关键路径\AOE网络关键路径\AOE网络关键路径.vcxproj.user
目录 0 2012-06-10 09:30 AOE网络关键路径\AOE网络关键路径\Debug\
文件 406 2012-05-12 20:43 AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.exe.em
文件 472 2012-05-12 20:43 AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.exe.em
文件 381 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.exe.intermediate.manifest
文件 73 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.lastbuildstate
文件 2141 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.log
文件 72469 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.obj
文件 208 2012-05-12 20:43 AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径_manifest.rc
文件 682 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\cl.command.1.tlog
文件 7750 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\CL.read.1.tlog
文件 374 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\CL.write.1.tlog
文件 2 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\li
文件 2 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\li
文件 1544 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\li
文件 2802 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\li
文件 804 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\li
文件 406 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\mt.command.1.tlog
文件 338 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\mt.read.1.tlog
文件 338 2012-05-12 22:49 AOE网络关键路径\AOE网络关键路径\Debug\mt.write.1.tlog
文件 564 2012-05-12 20:43 AOE网络关键路径\AOE网络关键路径\Debug\rc.command.1.tlog
文件 310 2012-05-12 20:43 AOE网络关键路径\AOE网络关键路径\Debug\rc.read.1.tlog
文件 318 2012-05-12 20:43 AOE网络关键路径\AOE网络关键路径\Debug\rc.write.1.tlog
............此处省略27个文件信息
- 上一篇:VC++开发实战1200例界面换肤模块
- 下一篇:VC/MFC启动及登录界面设计
评论
共有 条评论