Алгоритм очевиден:
TryP(i) пытается
i < maxn: подставить число от 1 до 4 в ячейку ответа ans[i], предварительно проверяя, не возникает ли противоречие, в каждом случае отсутствия противоречия переходит в TryP(i+1)
i = maxn: противоречий нет, и мы заполнили массив ответа. Выводим ans и вырубаемся (можно было exit(0), но для наглядности, что алгоритм в случае 58 прошел все варианты и умер, я сделала вывод DONE)
Теперь понятно. Но я подумал тут вот о чём. Ведь если мы сформировали уже группу из каких-то
чисел, среди которых нет противоречий, и добавляем
число. Оно вызывает противоречие. Тогда мы пробуем следующую и следующую группу и так далее. Допустим оно не подошло не в одну.
Пусть в первой группе это число
, которое вступило в противоречие с числом
, т.к.
. Но тогда ведь сохраняется возможность без потери решения перенести число
в какую-нибудь группу (поменять на другое число, которое уже не будет с числом
давать противоречий) - без потери общности, и таким образом, число
добавится.
Кроме того, может возникнуть ситуация, когда и число
не удастся поменять ни с одной группой, т.к. оно тоже даст противоречия с одним или несколькими числами, которые так же потребуется переносить. Но в конце концов, такая "пересортировка" всё же сможет дать желаемый результат. И таких возможностей может быть очень и очень много. Вот я и подумал, учитывает ли ваш алгоритм это?
P.S.
За магии спасибо! Улыбнуло.
Особенно, что решается "только человеком по имени Сергей Копелиович".
Задача 3 особенно интересна. Но к ней можно вернуться после того, как одолеть эту.
-- Сб мар 12, 2011 19:52:38 --Попробовал найти доказательство для некоторого
, используя доказательство Ксении для трёх групп. Её доказательство начинает "работать" с
.
На 3 подмножества разбить нельзя.
Для каждого
числа n и n+7 обязаны находиться в одном и том же подмножестве. Почему? Возьмём числа
. Ясно, что n-9, n и n+16 должны принадлежать трём разным подмножествам. Точно так же n-9, n+7 и n+16 должны принадлежать трём разным подмножествам. Следовательно, n и n+7 будут вместе. Тогда числа 10, 17, 24, ... 59 должны быть вместе, но 59-10=49 является квадратом. Противоречие.
Для того, чтобы применить подобное для 4-х групп и построить ограничение, начиная с некоторого
необходимо чтобы имела решение некоторая система:
в целых числах.
Эта задача очень похожа на поиск рационального кубоида. я попытался решить её, у меня получились очень жёсткие (практически нереальные) условия на
. Которые с трудом верится, что можно выполнить. Хотя такая возможность не исключена. Но учитывая то, что отдельные множители в данном случае из которых затем "строятся"
или
. Представляют собой суммы 4-х квадратов, и на них ещё задаются доп.условия, то в ближайших 10000 такое решение навряд ли существует. А значит и
, начиная с которого разбиение на 4 группы невозможно - достаточно велико.