我正在写一个JavaScript应用程序,试图找出在视频游戏中角色的项目构建。大约有25件顶级物品,一次可以携带6件物品。他们有不同的效果,这使我相信,虽然有一个项目本身看起来不太好,但与其他项目结合后可能会变得更加强大。如果有兴趣,我可以详细说明。计算使用6个项目可达到的最高可能伤害〜25
问题:
我怎样才能获得的6个项目全部不同的独特组合的名单?会有多少种组合?它只是25c6(〜134k)?或者我需要删除重复项? (对不起,我一段时间没有上数学课了。)
你会如何在Javascript中实现这样的东西?有没有一个数学图书馆可以做到这一点? (具体来说,遍历所有可能的物品组合。)
蛮力计算所有可能的组合的伤害似乎是可能的,并保存顶级物品组合?如果没有,是否有更好的算法来找到强组合?
这里是我的代码,根据每个人的投入:
function getAllCombinations(n, k, callback)
{
var iterate = function(remaining, args)
{
var len = args.length;
for (var i = args[len - 1]; i < n; i++)
{
args.splice(len);
args[len - 1] = i;
if (remaining)
{
args.push(i);
iterate(remaining - 1, args);
}
else
{
callback.apply(null, args);
}
}
}
iterate(k - 1, [0]);
}
var itemsCount = 25;
var itemSlots = 6;
getAllCombinations(itemsCount, itemSlots, function(a, b, c, d, e, f)
{
// calculateDamage(hero, arguments);
});
所有六个可以是相同的项目? – 2011-04-26 22:46:01
是的,他们有一些其他的怪癖,但我认为这将在其他地方处理。例如,这些物品中,你可能需要至少一件物品来提高你的移动速度,并且一次只有1个攻击修改器可以被激活 – Shawn 2011-04-26 23:01:24