🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
输入:数组t,存储n个任务的执行时间 m台完全一样的机器 输出:使任务在m台机器并行执行时间最短的一个调度策略 基于贪心选择:选择具有最短任务队列的机器。 ~~~ #include <iostream> #include <vector> using namespace std; int minTask(int *t,int n){ int tmp = t[0]; int min = 0; for(int i=0;i<n;i++){ if(tmp>t[i]){ tmp = t[i]; min = i; } } return min; } void makeSpanScheduling(int *t,int n,int num){ int *T = new int[num]; vector<vector<int> > M; for(int i=0;i<num;i++){ T[i] = 0; vector<int> tmp; M.push_back(tmp); } for(int i=0;i<n;i++){ int j = minTask(T,num); int tj = T[j]; T[j] = tj + t[i]; M[j].push_back(i+1); } for(int i=0;i<M.size();i++){ for(int j=0;j<M[i].size();j++) cout<<M[i][j]<<"\t"; cout<<endl; } } int main(int argc, char** argv) { int t[6]={1,2,3,4,5,6}; makeSpanScheduling(t,6,3); return 0; } ~~~