博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2.最佳调度问题
阅读量:5268 次
发布时间:2019-06-14

本文共 1169 字,大约阅读时间需要 3 分钟。

2.最佳调度问题

(machine.pas/c/cpp)
【问题描述】
假设有n个任务由k个可并行工作的机器完成。完成任务i需要的时间为ti。试设计一个算法找出完成这n个任务的最佳调度,使得完成全部任务的时间最早。
【编程任务】
对任意给定的整数n(<=20)和k(<=10),以及完成任务i需要的时间为ti,i=1~n。编程计算完成这n个任务的最佳调度。
【输入格式】
由文件machine.in给出输入数据。第一行有2 个正整数n和k。第2 行的n个正整数(<=10000)是完成n个任务需要的时间。
【输出格式】
将计算出的完成全部任务的最早时间输出到文件machine.out。
【输入样例】
7 3
2 14 4 16 6 5 3
【输出样例】
17

#include
#include
#include
#include
using namespace std;int a[25],b[15],ans;int n,k;bool cmp1(int a,int b){ return a>b;}int greedy(){ sort(a+1,a+1+n,cmp1); for(int j=1;j<=n;j++) { b[1]+=a[j]; sort(b+1,b+1+k); } return ans=b[k];}void dfs(int s,int t){ if(t>=ans)return; if(s>n){ ans=min(ans,t);return; } for(int i=1;i<=k;i++) { b[i]+=a[s]; dfs(s+1,max(b[i],t)); b[i]-=a[s]; }}int main(){ freopen("machine.in","r",stdin); freopen("machine.out","w",stdout); cin>>n>>k; for(int i=1;i<=n;i++)cin>>a[i]; greedy(); memset(b,0,sizeof(b)); dfs(1,0); cout<
<

 

转载于:https://www.cnblogs.com/EdSheeran/p/7632985.html

你可能感兴趣的文章
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
Windows 2003全面优化
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
我的Hook学习笔记
查看>>
js中的try/catch
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
整理推荐的CSS属性书写顺序
查看>>
ServerSocket和Socket通信
查看>>
css & input type & search icon
查看>>
源代码的下载和编译读后感
查看>>
Kafka学习笔记
查看>>
Octotree Chrome安装与使用方法
查看>>