Показать сообщение отдельно
  #11 (permalink)  
Старый 15.05.2016, 15:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

cyber,
всего вариантов 768 за счёт оптимизации (continue) получилось 488 , а необходимые варианты были созданы только 1 раз (всего 13).
<script>
var num = [10, 7, 8, 1],
    res = [],
    limit = 55,
    a, b, c, e;
for (var i = 0; i <= 5; i++) {
    a = i * num[0];
    if (a > limit) continue;
    for (var k = 0; k <= 3; k++) {
        b = k * num[1];
        if (a + b > limit) continue;
        for (var n = 0; n <= 3; n++) {
            c = n * num[2];
            if (a + b + c > limit) continue;
            for (var d = 0; d <= 7; d++) {
                e = d * num[3];
                if (a + b + c + e == limit) res.push([a, b, c, e])
            }
        }
    }
};
document.write(
  res.join("<br>")+ "<br>Всего вариантов : " + res.length
);
</script>
Ответить с цитированием