我正在用 javascript 编写一个应用程序,试图找出视频游戏中角色的项目构建。顶级物品大约有 25 件,一次可以携带 6 件。它们有非常不同的效果,这让我相信,虽然一个项目本身看起来不是很好,但与其他项目结合起来会变得更强大。如果有兴趣,我可以详细说明。
问题:
如何获得 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);
});