Вот хороший пример для размышления:
http://en.wikipedia.org/wiki/Kakuro
Я пытаюсь сделать решатель для этой игры. Делопроизводство завершено (чтение исходного файла с переменным числом столбцов и строк. Предполагается, что входной файл соответствует правилам игры, поэтому игра всегда решаема. Не торопитесь, чтобы прочитать правила игры.
Я позаботился о структуре данных, которая, я думаю, подойдет лучше всего:
struct aSquare { int verticalSum; int horizontalSum; int value; }
И сделал «массив» из них динамически для работы.
Я сделал так, чтобы черные квадраты имели значение -1, а белые квадраты (фактические квадраты решения) инициализировались в 0. Вы также можете легко получить положение каждой структуры aSquare из массива, не нужно создавать для нее дополнительные поля структуры .
Теперь алгоритм ... Как в мире я примирю все эти суммы и найду общий способ, который решит все типы сеток. Я боролся с этим весь день безрезультатно.
Помощь приветствуется, веселитесь!
* РЕДАКТИРОВАТЬ: я только что понял, что фактическая ссылка, которую я разместил, содержит несколько советов относительно методов решения. Я все еще буду следить за тем, что придут люди.