输入:第1行输入机器数量m,作业数量n;第2行输入每个作业所需的加工处理时间。例:
3 7
2 14 4 16 6 5 3
输出:n个作业全部加工处理完成所需最短时间的近似最优值。例:
17
源代码:
#include <iostream> #include <cstdio> #include<algorithm> #include<string.h>
using namespace std;
int cmp(int x,int y){ return x > y; }
int main() { int n,m; while(~scanf(“%d%d”,&m,&n)) { int i,j,max,k,min; int t[n],mac[m]; memset(t,0,sizeof(t)); memset(mac,0,sizeof(mac)); for(i = 0;i < n;i++) scanf(“%d”,&t[i]); sort(t,t+n,cmp); if(n <= m) { printf(“%d\n”,t[0]); continue; } else { for(i=0;i<n;i++) { min = mac[0]; for(k = 0,j = 1;j < m;j++) if(mac[j] < min) { min = mac[j]; k = j; } mac[k] += t[i]; } } max = mac[0]; for(i = 1;i < m;i++) if(mac[i] > max) max = mac[i]; printf(“%d\n”,max); } return 0; } |