{///'title///': ///'C 语言关键路径算法实现///', ///'description///': ///'本文提供一个 C 语言实现的关键路径算法示例,通过结构体定义活动及其依赖关系,计算出项目的最长耗时和关键路径。///', ///'keywords///': ///'关键路径算法, C 语言, 项目管理, 最长耗时, 依赖关系///', ///'content///': ///'#include <stdio.h>//n//n#define MAX_ACTIVITY 9//n//n// 活动的结构体//ntypedef struct {//n int duration; // 持续时间//n int dependencies[MAX_ACTIVITY]; // 依赖的活动//n int num_dependencies; // 依赖的活动数量//n int early_start; // 最早开始时间//n int late_start; // 最迟开始时间//n} Activity;//n//n// 计算关键路径//nvoid calculateCriticalPath(Activity activities[], int num_activities) {//n int i, j;//n //n // 初始化最早开始时间和最迟开始时间为0//n for (i = 0; i < num_activities; i++) {//n activities[i].early_start = 0;//n activities[i].late_start = 0;//n }//n //n // 计算每个活动的最早开始时间//n for (i = 0; i < num_activities; i++) {//n int max_early_start = 0;//n for (j = 0; j < activities[i].num_dependencies; j++) {//n int dependency = activities[i].dependencies[j];//n int early_start = activities[dependency].early_start + activities[dependency].duration;//n if (early_start > max_early_start) {//n max_early_start = early_start;//n }//n }//n activities[i].early_start = max_early_start;//n }//n //n // 计算项目的最长耗时//n int project_duration = 0;//n for (i = 0; i < num_activities; i++) {//n int completion_time = activities[i].early_start + activities[i].duration;//n if (completion_time > project_duration) {//n project_duration = completion_time;//n }//n }//n //n // 计算每个活动的最迟开始时间//n for (i = num_activities - 1; i >= 0; i--) {//n int min_late_start = project_duration;//n for (j = 0; j < activities[i].num_dependencies; j++) {//n int dependency = activities[i].dependencies[j];//n int late_start = activities[dependency].late_start - activities[i].duration;//n if (late_start < min_late_start) {//n min_late_start = late_start;//n }//n }//n activities[i].late_start = min_late_start;//n }//n //n // 判断并输出关键路径//n printf(///'关键路径:///');//n int has_critical_activity = 0;//n for (i = 0; i < num_activities; i++) {//n if (activities[i].early_start == activities[i].late_start) {//n printf(///'%c ///', //'A//' + i);//n has_critical_activity = 1;//n }//n }//n if (!has_critical_activity) {//n printf(///'无///');//n }//n printf(///'//n项目最迟开始时间:%d//n///', project_duration);//n}//n//nint main() {//n // 定义活动//n Activity activities[MAX_ACTIVITY] = {//n {3, {}, 0},//n {2, {0}, 1},//n {4, {0}, 1},//n {5, {1}, 1},//n {8, {1}, 1},//n {3, {2}, 1},//n {5, {5}, 1},//n {10, {4, 6, 7}, 3},//n {2, {3, 6, 7}, 3}//n };//n //n // 计算关键路径//n calculateCriticalPath(activities, MAX_ACTIVITY);//n //n return 0;//n}//n///

C 语言关键路径算法实现

原文地址: https://www.cveoy.top/t/topic/pNGr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录