Javascript 使用~25个物品池中的6件物品计算可能造成的最高伤害
我正在用javascript编写一个应用程序,试图找出视频游戏中角色的项目构建。顶级物品大约有25件,一次可以携带6件。它们有非常不同的效果,这让我相信,虽然一个项目本身看起来不是很好,但当与其他项目结合时,它可以变得更强大。如果有兴趣,我可以详细说明 问题:Javascript 使用~25个物品池中的6件物品计算可能造成的最高伤害,javascript,math,binomial-coefficients,Javascript,Math,Binomial Coefficients,我正在用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);
});
函数getAllCombinations(n,k,回调)
{
var iterate=函数(剩余,参数)
{
var len=args.length;
for(var i=args[len-1];ifor (int i = 0; i < 25; i++) {
for (int j = i; j < 25; j++) { // note j=i not j=0
// etc
foo(i,j,k,l,m,n);
}
}
for(int i=0;i<25;i++){
对于(int j=i;j<25;j++){//注意j=i而不是j=0
//等
foo(i,j,k,l,m,n);
}
}
如果您需要通用值25和6的通用解决方案,那么编写具有类似效果的递归函数应该不难
3) 我认为你唯一的选择是暴力。这可能需要几分钟,但应该完成。我认为它在Chrome中速度最快,在IE中无法使用。其他选项,如“本地搜索技术”似乎不适合你,因为你的空间不是特别连续。1)是的,只有25-6
2) 如果你只需要做一次,你可以用嵌套循环来做。关键是使每个内部循环不是从零开始,而是从外部计数器开始
for (int i = 0; i < 25; i++) {
for (int j = i; j < 25; j++) { // note j=i not j=0
// etc
foo(i,j,k,l,m,n);
}
}
for(int i=0;i<25;i++){
对于(int j=i;j<25;j++){//注意j=i而不是j=0
//等
foo(i,j,k,l,m,n);
}
}
如果您需要通用值25和6的通用解决方案,那么编写具有类似效果的递归函数应该不难
3) 我认为你唯一的选择是暴力。这可能需要几分钟,但应该完成。我认为它在Chrome中速度最快,在IE中无法使用。其他选项如“本地搜索技术”似乎不适合你,因为你的空间不是特别连续
如果您知道只有6个项,那么就可以使用6个嵌套for循环(尽管这显然不能很好地扩展)
如果您知道只有6个项,那么就可以使用6个嵌套for循环(尽管这显然不能很好地扩展)