寻找最小最大份额

问题描述

最近我遇到了这个问题: Finding maximal minimum value set

以及计算最大最小值的代码答案:

maximin(Elements,N,Maximin,Ldistribution):-
  sumlist(Elements,Sum),TargetMaximin is -Sum//N,once(
  (
    between(TargetMaximin,-1,NMaximin),Maximin is -NMaximin,distribute(Elements,[],n,LdistributionOnce)
  )),Ldistribution=LdistributionOnce.
  
distribute([],_,[]).
distribute(Elements,Skipped,y,Cur,distribution,[distribution|Ldistribution]):-
  N>0,Cur >= Maximin,succ(N1,N),append(Elements,NElements),distribute(NElements,N1,Ldistribution).
distribute([Element|Elements],Ldistribution):-
  N>0,NCur is Cur+Element,NCur,[Element|distribution],[Element|Skipped],Ldistribution).

我想看看一个不同的问题。我想计算最小最大份额,而不是计算最大最小份额。我尝试了以下更改来调整此代码

minimax(Elements,Minimax,TargetMinimax is Sum//N,once(
  (
    between(TargetMinimax,Sum,NMinimax),Minimax is 0+NMinimax,distribute_minimax(Elements,Ldistribution=LdistributionOnce.

这意味着搜索最小最大值将从大约总和除以人数开始。另外,我改变了分布函数

distribute_minimax([],[]).
distribute_minimax(Elements,[distribution|Ldistribution]):-
                                   N>0,Cur =< Minimax,distribute_minimax(NElements,Ldistribution).
distribute_minimax([Element|Elements],Ldistribution):-
                                   N>0,Ldistribution).

但问题是我的程序不知道如何跳过项目,然后再使用它们,所以我得到了错误的答案。有什么建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)