没有合适的资源?快使用搜索试试~ 我知道了~
C++ 关键路径 关键路径 AOE suanfa 算法
资源推荐
资源详情
资源评论
#include<stdio.h>
#include<stdlib.h>
#include<iomanip.h>
#include <process.h>
//#define PROJECTNUMBER 9//10
//#define PLANNUMBER 11//13
typedef struct node
{
int adjvex;//活动结束的事件的点
int dut;//活动的时间
struct node *next;//活动的开始事件
}edgenode;
typedef struct
{
int projectname;
int id;//到达该节点的活动的个数
edgenode *link;
}vexnode;
//////////////////////////////////////////////////////////////////////////////////////
//建立AOE图
void CreateGraphic(vexnode* Graphicmap,int projectnumber,int activenumber)
{
int begin,end,duttem;
edgenode *p;
for(int i=0;i<projectnumber;i++)
{
Graphicmap[i].projectname=i;
Graphicmap[i].id =0;
Graphicmap[i].link =NULL;
}
#include<stdlib.h>
#include<iomanip.h>
#include <process.h>
//#define PROJECTNUMBER 9//10
//#define PLANNUMBER 11//13
typedef struct node
{
int adjvex;//活动结束的事件的点
int dut;//活动的时间
struct node *next;//活动的开始事件
}edgenode;
typedef struct
{
int projectname;
int id;//到达该节点的活动的个数
edgenode *link;
}vexnode;
//////////////////////////////////////////////////////////////////////////////////////
//建立AOE图
void CreateGraphic(vexnode* Graphicmap,int projectnumber,int activenumber)
{
int begin,end,duttem;
edgenode *p;
for(int i=0;i<projectnumber;i++)
{
Graphicmap[i].projectname=i;
Graphicmap[i].id =0;
Graphicmap[i].link =NULL;
}
printf("某项目的开始到结束在图中的节点输入<vi,vj,dut>\n");
printf("如:3,4,9 回车表示第三节点到第四节点之间的活动用了9个单位时间\n");
for(int k=0;k<activenumber;k++)//数据输入
{
scanf("%d,%d,%d",&begin,&end,&duttem);
p=(edgenode*)malloc(sizeof(edgenode));//活动节点
p->adjvex =end-1;
p->dut =duttem;
Graphicmap[end-1].id++;
p->next =Graphicmap[begin-1].link;
Graphicmap[begin-1].link=p;
}
//数据输入结束
}
//////////////////////////////////////////////////////////////////////////////////////////////
//求出最大路径,并打印出关键路径
int SearchMapPath(vexnode* Graphicmap,int projectnumber,int activenumber,int& totaltime)
{
int i,j,k,m=0;
int front=-1,rear=-1;
int* topologystack=(int*)malloc(projectnumber*sizeof(int));//用来保存拓扑排列
int* vl=(int*)malloc(projectnumber*sizeof(int));//用来表示在不推迟整个工程的前提下,VJ允许最迟发生的时间
int* ve=(int*)malloc(projectnumber*sizeof(int));//用来表示Vj最早发生时间
int* l=(int*)malloc(activenumber*sizeof(int));//用来表示活动Ai最迟完成开始时间
int* e=(int*)malloc(activenumber*sizeof(int));//表示活动最早开始时间
edgenode *p;
totaltime=0;
for(i=0;i<projectnumber;i++) ve[i]=0;
for(i=0;i<projectnumber;i++)
{
printf("如:3,4,9 回车表示第三节点到第四节点之间的活动用了9个单位时间\n");
for(int k=0;k<activenumber;k++)//数据输入
{
scanf("%d,%d,%d",&begin,&end,&duttem);
p=(edgenode*)malloc(sizeof(edgenode));//活动节点
p->adjvex =end-1;
p->dut =duttem;
Graphicmap[end-1].id++;
p->next =Graphicmap[begin-1].link;
Graphicmap[begin-1].link=p;
}
//数据输入结束
}
//////////////////////////////////////////////////////////////////////////////////////////////
//求出最大路径,并打印出关键路径
int SearchMapPath(vexnode* Graphicmap,int projectnumber,int activenumber,int& totaltime)
{
int i,j,k,m=0;
int front=-1,rear=-1;
int* topologystack=(int*)malloc(projectnumber*sizeof(int));//用来保存拓扑排列
int* vl=(int*)malloc(projectnumber*sizeof(int));//用来表示在不推迟整个工程的前提下,VJ允许最迟发生的时间
int* ve=(int*)malloc(projectnumber*sizeof(int));//用来表示Vj最早发生时间
int* l=(int*)malloc(activenumber*sizeof(int));//用来表示活动Ai最迟完成开始时间
int* e=(int*)malloc(activenumber*sizeof(int));//表示活动最早开始时间
edgenode *p;
totaltime=0;
for(i=0;i<projectnumber;i++) ve[i]=0;
for(i=0;i<projectnumber;i++)
{
剩余5页未读,继续阅读
资源评论
hunima
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功