Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Алгоритм размена монет (https://javascript.ru/forum/offtopic/63054-algoritm-razmena-monet.html)

рони 15.05.2016 15:42

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>

nerv_ 15.05.2016 15:43

Prolog использует поиск с возвратом.
cyber, ты бы открыл википедию и почитал, что такое поиск с возвратом. Я даже не понимаю, о каком поиске с возвратом может идти речь, если у вас нет дерева :)
Поиск с возвратом, это практически тоже самое, что и поиск в глубину, который, как и другие методы неинформированого поиска реализован (из коробки) в моем рекурсивном итераторе, http://javascript.ru/forum/project/5...-iterator.html :)

cyber 15.05.2016 15:46

Цитата:

Сообщение от nerv_
ы бы открыл википедию и почитал, что такое поиск с возвратом. Я даже не понимаю, о каком поиске с возвратом может идти речь, если у вас нет дерева

Вот тебе пример без дерева https://en.wikipedia.org/wiki/Sudoku...s#Backtracking
Проще говоря, это тупо перебор всех возможных вариантов, с нужными ифками на отброс лишних вариантов

cyber 15.05.2016 15:47

рони, спасибо, ты быстрый, я только начал писать))
П.с а вообще я чет заигрался с рекурсией и костылями что не попробовал на форах
П.с.с я не знаю какие у меня буду входные данные, то что я дал это данные которые я вручную проверил и на них тестирую))

nerv_ 15.05.2016 15:54

Цитата:

Сообщение от cyber
Вот тебе пример без дерева https://en.wikipedia.org/wiki/Sudoku...s#Backtracking

похоже, что понятие графа пространства состояний тебе не знакомо. Твоя ссылка как раз о нем.

cyber 15.05.2016 15:58

nerv_, ты ведешь к тому что мне нужно дерево или граф?)

cyber 15.05.2016 17:52

Но посути получается, что при рекурсии оно входит в своеобразное дерево и углубляется пока сумма меньше квоты

nerv_ 15.05.2016 17:55

Цитата:

Сообщение от cyber
ты ведешь к тому что мне нужно дерево или граф?)

я пытаюсь сказать, что поиск с возвратом подразумевает наличие дерева/графа состояний, который (граф), зачастую, формируется на лету (on the fly). По крайней мере пятнашки я именно так решал.

Информационные источники:
Искусственный интеллект. Современный подход (книга)
Artificial Intelligence (онлайн курс от института Беркли)

cyber 15.05.2016 18:24

Цитата:

Сообщение от nerv_
я пытаюсь сказать, что поиск с возвратом подразумевает наличие дерева/графа состояний, который (граф), зачастую, формируется на лету (on the fly). По крайней мере пятнашки я именно так решал.

Т.е мне по сути нужно будет дерево
10
   /   |   \     \
 10  1   8    7
                 / |   \  \
                1 7  10   8

и так далее в зависимости от количества возможных элементов?
или как, а то вообще идей нет уже

cyber 16.05.2016 00:11

Короче сдал и я вот не пойму, не проходило тест из за того что ифка для проверки выхода за границе находилась в начале функции, а не перед ее вызовом, как то так.
Все было гениально просто


Часовой пояс GMT +3, время: 22:20.