Показать сообщение отдельно
  #5 (permalink)  
Старый 16.03.2016, 01:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от destus
Надо немного модифицировать, с учетом ограничения m
спасибо за инфо ... наверно есть и для этого случая алгоритм ... но в варианте ниже просто проверка на максимум (every <= m)
<script>
function fn(b, d) {
    for (var a = Array(b + 1).join("1").split(""), c = []; a[0] != b;) a.reduce(function(a, b) {
        return a + +b
    }, 0) < b ? a.push(1) : (a.every(function(a) {
        return +a <= d
    }) && c.push(a.slice()), a.pop(), a[a.length - 1]++);
    return c.sort(function(a, b) {
        return +a.join('') - +b.join('')
    })
};
document.write(fn(5,3).join('<br>')+ "<br>Всего: "+ fn(5,3).length);

</script>
Ответить с цитированием