题意:
n个任务,需要交代B分钟,执行J分钟,让你合理选择交代任务的次序,求得n个任务完成的最小总时长
思路:
为保证总时长最小,执行时长较大的应该先执行,所以每个按执行时长由大到小排序求得总时长。
代码:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
struct solder{
int b, j;
}s[1005];
int cmp(solder x, solder y){
if (x.j > y.j)
return 1;
return 0;
}
int main() {
int n,Case=1;
while (scanf("%d", &n) && n){
int i;
for (i = 0; i < n; i++)
scanf("%d%d", &s[i].b, &s[i].j);
sort(s, s + n,cmp);
int sum = 0,cnt=0;
for (i = 0; i < n; i++){
sum += s[i].b;
cnt = sum+s[i].j>cnt ? sum+s[i].j : cnt;
}
printf("Case %d: %d\n",Case,cnt);
Case++;
}
return 0;
}

本文探讨了如何通过合理安排任务的执行顺序,以最小化完成所有任务所需的总时间。通过将任务按执行时间从大到小排序,并采用贪心策略进行调度,实现了任务总时长的最小化。
413

被折叠的 条评论
为什么被折叠?



