C语言项目时间管理:计算项目最短时间和任务最晚完成时间
{///'title///': ///'C语言项目时间管理:计算项目最短时间和任务最晚完成时间///', ///'description///': ///'本代码使用 C 语言实现了一个项目时间管理程序,可以计算项目的整体最短完成时间以及每个任务的最晚完成时间。程序使用结构体来存储任务信息,并使用递归函数来计算最早完成时间和最晚完成时间。///', ///'keywords///': ///'项目管理, 时间管理, C语言, 递归, 最短时间, 最晚完成时间///', ///'content///': ///'#include <stdio.h>//n#define MAX_TASKS 10//n//ntypedef struct {//n char name;//n int time;//n int dependencies[MAX_TASKS];//n int numDependencies;//n} Task;//n//n// 计算任务的最早完成时间//nint calculateEarliestTime(Task tasks[], int taskId) {//n if (tasks[taskId].numDependencies == 0) {//n return tasks[taskId].time;//n }//n //n int maxTime = 0;//n for (int i = 0; i < tasks[taskId].numDependencies; i++) {//n int dependencyId = tasks[taskId].dependencies[i];//n int dependencyTime = calculateEarliestTime(tasks, dependencyId);//n if (dependencyTime > maxTime) {//n maxTime = dependencyTime;//n }//n }//n //n return maxTime + tasks[taskId].time;//n}//n//n// 计算任务的最晚完成时间//nint calculateLatestTime(Task tasks[], int taskId, int projectTime) {//n if (tasks[taskId].numDependencies == 0) {//n return projectTime - tasks[taskId].time;//n }//n //n int minTime = projectTime;//n for (int i = 0; i < tasks[taskId].numDependencies; i++) {//n int dependencyId = tasks[taskId].dependencies[i];//n int dependencyTime = calculateLatestTime(tasks, dependencyId, projectTime);//n if (dependencyTime < minTime) {//n minTime = dependencyTime;//n }//n }//n //n return minTime - tasks[taskId].time;//n}//n//nint main() {//n int numTasks;//n printf(///'请输入任务数量:///');//n scanf(///'%d///', &numTasks);//n //n Task tasks[MAX_TASKS];//n //n // 输入任务信息//n for (int i = 0; i < numTasks; i++) {//n printf(///'请输入任务名称:///');//n scanf(///' %c///', &tasks[i].name);//n //n printf(///'请输入预计完成时间:///');//n scanf(///'%d///', &tasks[i].time);//n //n printf(///'请输入前置任务数量:///');//n scanf(///'%d///', &tasks[i].numDependencies);//n //n printf(///'请输入前置任务编号(用空格分隔):///');//n for (int j = 0; j < tasks[i].numDependencies; j++) {//n scanf(///'%d///', &tasks[i].dependencies[j]);//n }//n }//n //n int projectTime = 0;//n // 计算整个项目的最短时间//n for (int i = 0; i < numTasks; i++) {//n int taskEarliestTime = calculateEarliestTime(tasks, i);//n if (taskEarliestTime > projectTime) {//n projectTime = taskEarliestTime;//n }//n }//n //n printf(///'整个项目的最短时间为:%d//n///', projectTime);//n //n // 计算每个任务的最晚完成时间//n for (int i = 0; i < numTasks; i++) {//n int taskLatestTime = calculateLatestTime(tasks, i, projectTime);//n printf(///'任务%c的最晚完成时间为:%d//n///', tasks[i].name, taskLatestTime);//n }//n //n return 0;//n}//n///
原文地址: https://www.cveoy.top/t/topic/pJPs 著作权归作者所有。请勿转载和采集!