Я не то, чтобы понять не могу, просто разбираться лень - пропал уже интерес давно к этой задачке. Так что, боюсь, сильно помочь не смогу.
На всякий случай, поясню, какой алгоритм использовал я: берешь строчку или столбец, смотришь все комбинации клеток, не противоречащие уже существующей на поле ситуации и соответствующие цифрам в этой строке. Если в результате во всех этих комбинациях какая-то клетка закрашена или не закрашена, отмечаем ее.
Алгоритм не работает для ситуевин, когда положение некоторых клеток можно определить только одновременным анализом столбцов и строк. В принципе, можно для каждой валидной комбинации клеток в строке смотреть, существует ли при этом валидная комбинация в каждом столбце, это даже довольно просто реализовать, но подозреваю, что такая программа работать будет долго. Без этих проверок моя программка решала кроссворды 20х20 в течение нескольких секунд (на пентиуме-200 с учетом вывода на экран
).
Быть... или не быть. Вот. В чём вопрос?