问题描述
最近我遇到了这个问题: 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 (将#修改为@)