<pre>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Course {
int id;
string name;
int duration;
vector<int> prerequisites;
};
vector<Course> courses;
bool canSchedule(int courseId, vector<bool>& scheduled) {
for (int prereq : courses[courseId].prerequisites) {
if (!scheduled[prereq]) return false;
}
return true;
}
void scheduleCourses() {
vector<bool> scheduled(courses.size(), false);
while (true) {
bool anyScheduled = false;
for (int i = 0; i < courses.size(); ++i) {
if (!scheduled[i] && canSchedule(i, scheduled)) {
cout << "Scheduling course: " << courses[i].name << endl;
scheduled[i] = true;
anyScheduled = true;
}
}
if (!anyScheduled) break;
}
}
int main() {
// 初始化课程数据
Course c1 = {1, "Math", 2, {}};
Course c2 = {2, "Physics", 3, {1}};
Course c3 = {3, "Chemistry", 2, {2}};
courses.push_back(c1);
courses.push_back(c2);
courses.push_back(c3);
// 调度课程
scheduleCourses();
return 0;
}
</pre>
本站部分内容及素材来源于互联网,如有侵权,联系必删!