生日蛋糕问题 【最简洁代码】

本文探讨了如何解决生日蛋糕问题,通过采用高效的剪枝策略来优化代码,实现问题的简洁解决方案。
摘要由CSDN通过智能技术生成

生日蛋糕问题

   

 

剪枝

 

 

program cake;
var
  v,m,r,h,ans,i:longint;
  mins,minv:array[0..30]of longint;
function min(i,j:longint):longint; begin if i>j then exit(j) else exit(i); end;
procedure search(floor,v_leave,s_used,last_r,last_h:longint);
var r,h,maxv:longint;
begin
 if (floor=m+1) and (s_used<ans) and (v_leave=0) then ans:=s_used;
 if floor>m then exit;
 if s_used+2*sqr(m-floor+1)>ans then exit;
 if ((2*v_leave)/r+s_used)>ans then exit;
 if v_leave>((m-floor+1)*(sqr(r)*h)) then exit;
 if v_leave<(m-floor+1) then exit;
  if floor=m+1 then begin
    if v_leave=0 then begin if s_used<ans then ans:=s_used; end;
    exit;
  end;
  for r:=m-floor+1 to last_r-1 do
    for h:=m-floor+1 to last_h-1 do
      search(floor+1,v_leave-r*r*h,s_used+2*r*h,r,h);
end;
begin
assign(input,'cake.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值