搜索与回溯 最佳调度问题

来源:互联网 发布:阿里云华南1 a b 区 编辑:程序博客网 时间:2024/05/16 18:24

SSL 2287
题目大意
给出n个待做的工作
给出k,可以并行使用的机器
求最小做完n项工作
(DFS)

var  n,k,min:longint;  a,b:array[0..1000]of longint;procedure init;var  i,j:longint;begin  readln(n,k);  for i:=1 to n do   read(a[i]);  for i:=1 to n-1 do   for j:=i+1 to n do    if a[i]<a[j] then     begin       a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];     end;  min:=maxlongint;end;procedure search(dep,max:longint);var  i:longint;begin  if dep>n then begin if min>max then min:=max; exit; end;  if max>=min then exit;  for i:=1 to k do   begin     inc(b[i],a[dep]);     if b[i]>max then search(dep+1,b[i])      else search(dep+1,max);     dec(b[i],a[dep]);   end;end;begin  init;  search(1,0);  writeln(min);end.

题解,不想说什么。
很简单,暴力搜索(深搜)
每次都给没有做过的工作放入一个机器里。

就这么简单
傻X题
向幂伟致敬!
http://blog.csdn.net/qq_33229466/article/details/50646919

0 0
原创粉丝点击