任务最优调度

标题:任务最优调度 | 时间限制:1秒 | 内存限制:65536K | 语言限制:不限
给定一个正整型数组表示待系统执行的任务列表,数组的每一个元素代表一个任务,元素的值表示该任务的类型。请计算执行完所有任务所需的最短时间。任务执行规则如下:
1、任务可以按任意顺序执行,且每个任务执行耗时间均为1个时间单位。
2、两个同类型的任务之间必须有长度为N个单位的冷却时间,比如:N为2时,在时间K执行了类型3的任务,那么K+1和K+2两个时间不能执行类型3任务。
3、系统在任何一个单位时间内都可以执行一个任务,或者等待状态。
说明:数组最大长度为1000,数组最大值1000.



#include <iostream>
#include <string>

using namespace std;

void bubble(int task[]) {
	for (int i = 0; i < 1000; i++) {
		for (int j = i + 1; j <= 1000; j++) {
			if (task[j] > task[i]) {
				int temp;
				temp = task[i];
				task[i] = task[j];
				task[j] = temp;
			}
		}
	}
}

int main() {
	int task[1001] = { 0 };
	int N, count = 0, ans = 0;
	string str;
	getline(cin, str);
	cin >> N;
	for (int i = 0; i < str.length(); i++) {
		int temp = 0;
		while (i < str.length() && str[i] != ',') {
			temp = temp * 10 + str[i] - '0';
			i++;
		}
		task[temp]++;
	}
	bubble(task);
	while (task[0] > 0) {
		task[0]--;
		ans++;
		for (int i = 0; i < N; i++) {
			if (task[0] == 0 && task[i + 1] == 0)
				break;
			if (task[i + 1] > 0)
				task[i + 1]--;
			ans++;
		}
		bubble(task);
	}
	cout << ans << endl;
	return 0;
}


全部评论

相关推荐

xxxxOxo:该催就催,想要你的不会因为催就挂,催了就挂的是因为本来就要挂你
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务