我是个年轻的巫师,在我的魔法遭遇中,我非常努力地避免浪费法力。
我有X法术在任何特定的时间可用,他们每一个都有自己的法力消耗Y。
X,Y是严格低于11的正整数。
作为初学者,我的法力池波动很大(它总是低于11),我需要帮助尽可能少施展法术(卷轴是昂贵的,你知道),同时清空我的法力池。如果你找不到任何与我法力池大小完全匹配的法术组合,那么你应该给我提供最接近(而且更便宜)的法术组合。
我来到你和你无限的智慧,帮助我成为最伟大的黑暗巫师。我不会失望的。
输入样式(因为样式就是一切):
A、b、c、d、e、f
Y是法力池的大小。(a,b,c,d,e,f)是咒语。有6个法术,第一个消耗'a‘法力,第二个法术消耗'b’魔法,等等。
投入: 4;1 2 3 3 7 6
我有4个法力可用,6个法术可用。两个法术消耗1法力,1个法术消耗2法力,2个法术消耗3法力,等等。
投入: 3;1 3 5 2 10
产出:(3)
投入:8;4 1 9
产出:(4,1)
投入: 4;1 2 2 3
产出:(2,2),(1,3)
你应该输出每一个组合的法术,但是没有必要区分相同的法术。
对任何你想要的机器来说,最短的咒语都会得到大量的感谢和命运的鞭子。
发布于 2013-11-27 00:14:58
一定有更短的方法,但这是我能想到的。
l=Length;
f[{a_,b_}]:=Select[t=Cases[s=SortBy[Union@Cases[Subsets[b],x_/;0<Tr@x<a+1:>{x,Tr@x}],Last],
{x_,s[[-1,2]]}:> x],l@#==l@t[[1]]&]f[{4, {1, 2, 3, 7, 6}}]{1,3}
f[{3, {1, 3, 5, 2, 10}}]{{3}
f[{8, {4, 1, 9}}]{4,1}
f[{4, {1, 2, 2, 3}}]{1,3},{2,2}
https://codegolf.stackexchange.com/questions/15325
复制相似问题