奖金优化搏冷搏热
// list: 单倍奖金
// bsMax: 最大倍数
// type: hot/cold
function optBest(list, bsMax, type) {
var bsList = [], delta, total = bsMax * 2, bsAdd = 0;
$.each(list, function(idx, item) {
var minBs = Math.ceil(total / item);
bsList.push(minBs);
bsAdd += minBs;
});
delta = bsAdd - bsMax;
if (delta > 0) {
var prog = bsMax / bsAdd,
realBs,
overBs,
i, j;
for (i = 0, j = bsList.length; i < j; i++) {
realBs = Math.floor(bsList[i] * prog);
overBs = Math.min(delta, Math.max(1, bsList[i] - realBs));
if (overBs < bsList[i]) {
bsList[i] -= overBs;
delta -= overBs;
}
if (delta <= 0) {
break;
}
}
while (delta > 0) {
for (i = 0, j = bsList.length; i < j; i++) {
if (bsList[i] > 1) {
bsList[i]--;
delta--;
}
if (delta <= 0) {
break;
}
}
}
} else if (delta < 0) {
delta *= -1;
if (type == "hot") {
bsList[0] += delta;
} else {
bsList[bsList.length - 1] += delta;
}
}
return bsList;
}