A22003. 给定有 n个任务,每个任务有截⽌时间和利润,每个任务耗时 1 个时间单位、必须在截⽌时间前完成,且每个时间槽最多做 1 个任务。为了在规定时间内获得最⼤利润,可以采⽤贪⼼策略,即按利润从⾼到低排序,尽量安排,则横线处应填写( )。struct Task { int deadline; // 截止时间 int profit; // 利润 }; void sortByProfit(vector<Ta…
单选题
困难
知识点
题目描述
给定有 n个任务,每个任务有截⽌时间和利润,每个任务耗时 1 个时间单位、必须在截⽌时间前完成,且每个时间槽最多做 1 个任务。为了在规定时间内获得最⼤利润,可以采⽤贪⼼策略,即按利润从⾼到低排序,尽量安排,则横线处应填写( )。
struct Task {
int deadline; // 截止时间
int profit; // 利润
};
void sortByProfit(vector<Task>& tasks) {
sort(tasks.begin(), tasks.end(),
[](const Task& a, const Task& b) {
return a.profit > b.profit;
});
}
int maxProfit(vector<Task>& tasks) {
sortByProfit(tasks);
int maxTime = 0;
for (auto& t : tasks) {
maxTime = max(maxTime, t.deadline);
}
vector<bool> slot(maxTime + 1, false);
int totalProfit = 0;
for (auto& task : tasks) {
for (int t = task.deadline; t >= 1; t--) {
if (!slot[t]) {
_________________ // 在此处填入代码
break;
}
}
}
return totalProfit;
}
选项(单选)
答案解析
详细答案解析为会员权益,按每日次数查看。
开通 / 升级会员
上一题
下一题