資源簡介
用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啟動及登錄界面設計
評論
共有 條評論