搜索与回溯 最佳调度问题

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值