У меня возникла проблема с реализацией алгоритма для игровой задачи.
Задание такое: Найти такие 12 натуральных чисел, которые не превышают 19, что бы их сума по всем направлениями, указаными стрелкой, были равны 38. Числа не должны повторятся.
Ячейки я решил рассматривать как двумерный массив int значений, если его чуть-чуть наклонить.
Сразу же его инициализировал, согласно условию.
int mass[5][6]={{3,17,18,-1,-1,-1},{0,0,1,0,-1,-1},{16,2,0,0,0,-1},{0,0,0,0,-1,-1},{10,0,0,-1,-1,-1}};
Проблему составил алгоритм перебора значений пустых ячеек, обозначенных 0-ем. Что-то не могу ничего толкового придумать.
Ваш массив не даёт вам лёгких путей подбора. Я бы пошёл по другому пути - создал бы класс, который:
Дальше - как в судоку. Перебираем векторы, в которых всего лишь одна пустая ячейка. Она заполняется автоматически, число вычеркивается из остаточного набора и помещается в соответствующую ячейку массива. Когда таких векторов не останется, при этом остаточный набор ненулевой, решается задача по подбору вариантов с перебором векторов. В принципе, конечная задача сводится к матричному анализу, но реализовать универсальный матричный анализ, боюсь, будет на порядок сложнее, чем простой перебор.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем привет, вот есть фрагмент кода, в котором идёт проверка на находимость в мапе похожего ключа, если тип нашёл то возвращает минус 1, не нашёл...
Располагаю элементы в своём приложении с QGridLayout