#include <stdio.h>\n#define MAX_NODES 9\n\ntypedef struct {\n int start_time; // 最早开始时间\n int end_time; // 最晚结束时间\n int duration; // 持续时间\n int prev_count; // 前驱节点数量\n int prev[MAX_NODES]; // 前驱节点\n} Node;\n\nint main() {\n Node nodes[MAX_NODES] = {\n {0, 0, 3, 0, {}}, // A\n {0, 0, 2, 1, {0}}, // B\n {0, 0, 4, 1, {0}}, // C\n {0, 0, 5, 1, {1}}, // D\n {0, 0, 8, 1, {1}}, // E\n {0, 0, 3, 1, {2}}, // F\n {0, 0, 5, 1, {5}}, // G\n {0, 0, 10, 1, {4}}, // H\n {0, 0, 2, 3, {3, 6, 7}} // I\n };\n \n int i, j, max_time = 0;\n \n // 计算每个节点的最早开始时间\n for (i = 0; i < MAX_NODES; i++) {\n for (j = 0; j < nodes[i].prev_count; j++) {\n int prev_node = nodes[i].prev[j];\n int prev_end_time = nodes[prev_node].end_time;\n if (prev_end_time > nodes[i].start_time) {\n nodes[i].start_time = prev_end_time;\n }\n }\n nodes[i].end_time = nodes[i].start_time + nodes[i].duration;\n if (nodes[i].end_time > max_time) {\n max_time = nodes[i].end_time;\n }\n }\n \n // 计算每个节点的最晚结束时间\n for (i = MAX_NODES - 1; i >= 0; i--) {\n int min_end_time = max_time;\n for (j = 0; j < nodes[i].prev_count; j++) {\n int prev_node = nodes[i].prev[j];\n int prev_start_time = nodes[prev_node].start_time;\n if (prev_start_time < min_end_time) {\n min_end_time = prev_start_time;\n }\n }\n nodes[i].end_time = min_end_time;\n nodes[i].start_time = nodes[i].end_time - nodes[i].duration;\n }\n \n printf("关键路径为:");\n for (i = 0; i < MAX_NODES; i++) {\n if (nodes[i].start_time == nodes[i].end_time) {\n printf(" %c", 'A' + i);\n }\n }\n printf("\n整个项目的最短完成时间为:%d天\n", max_time);\n \n return 0;\n}

C语言代码实现关键路径计算 - A - C - F - G - H - I,最短完成时间27天

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

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