Эта задача вдохновлена этим приложением . Контрольные примеры заимствованы из этого приложения.
Это задача с быстрым кодом , цель которой состоит в том, чтобы решить самые большие тестовые случаи за наименьшее количество времени. Предусмотрено несколько небольших тестовых случаев, чтобы люди могли быстрее тестировать свои алгоритмы.
Вам будет дана квадратная входная сетка с размерами n-на-n, где 9 <= n <= 12 . Эта сетка будет разделена на n областей, где ячейки каждой области имеют уникальные идентификаторы (я буду использовать строчные буквы от al в тексте здесь, но вы можете выбрать все, что вам нравится, например, целые числа 1-12 ) ,
Входные данные могут выглядеть следующим образом (необязательный формат ввода):
aabbbbbcc
adddbbbcc
adeeecccc
adddefgcc
hhhdifggg
hdddifffg
hhhiifffg
hihiifffg
iiiiiiggg
Или проще визуализировать:
Вызов:
Вы должны разместить 2 * n деревьев в этом парке в соответствии со следующими правилами:
- Там должно быть ровно 2 дерева в столбце и 2 дерева в строке
- На всех участках должно быть ровно 2 дерева.
- Ни одно дерево не может быть смежным с другим деревом по вертикали, горизонтали или диагонали.
Решение макета выше:
Примечание: есть только одно решение для каждой головоломки
Дополнительные правила:
- Форматы ввода и вывода не являются обязательными
- Например, выходные данные могут быть списком индексов, сеткой с 1/0, указывающей, есть ли в этой позиции дерево, или модифицированной версией входных данных, где указаны деревья.
- Время выполнения должно быть детерминированным
- Программа должна завершиться в течение 1 минуты на компьютере @ isaacg
- Характеристики: 4 процессора, процессор i5-4300U @ 1,9 ГГц, 7,5 ГБ ОЗУ.
- Если ваша программа не может решить два самых больших тестовых случая за одну минуту, то время для второго по величине ( n = 11 ) будет вашим счетом. Вы проиграете против решения, которое решает самый большой случай.
Тестовые случаи:
Я мог бы отредактировать этот список, если кажется, что представления адаптированы под эти тестовые случаи.
12 на 12 :
--- Input ---
aaaaabccccdd
aaaaabccccdd
aaaaabbbbddd
eeeafffgbghh
eeaafffgbghh
eefffffggghh
eeefijffghhh
iieiijjjjkhh
iiiiijjjjkhk
lljjjjjjjkkk
llllllkkkkkk
llllllkkkkkk
--- Solution ---
aaaaabcccCdD
aaaaaBcCccdd
aAaaabbbbdDd
eeeaffFgBghh
eeAaFffgbghh
eefffffGgGhh
EeefijffghhH
iiEiIjjjjkhh
IiiiijjjjkHk
lljJjJjjjkkk
lLllllkkKkkk
lllLllKkkkkk
11 на 11 :
--- Input ---
aaaaaaabbcc
adddabbbbcc
edddbbbbbbc
eddddbbbbbb
effffggghhh
effffgghhii
eefffjjhhii
eeeejjjhhii
eeejjjjkiii
jjjjjjkkiii
jjjjjkkkiii
--- Solution ---
aaAaaaabbCc
adddAbBbbcc
eDddbbbbbbC
eddDdBbbbbb
effffggGhHh
eFfffGghhii
eefFfjjhHii
EeeejjjhhiI
eeEjjjjKiii
JjjjJjkkiii
jjjjjkKkIii
10-по-10
--- Input ---
aaaaabccdd
aeaabbbccd
aeaabfbgcd
eeeaafggcd
eeeaafghcd
eeeiifghcd
ieiiigghcd
iiijighhcd
jjjjighhcd
jjjggghhdd
--- Solution ---
aaAaabccdD
aeaaBbBccd
aEaabfbgcD
eeeaaFgGcd
eEeAafghcd
eeeiiFghCd
IeiIigghcd
iiijigHhCd
JjJjighhcd
jjjgGghHdd
9-по-9
--- Input ---
aabbbbbcc
adddbbbcc
adeeecccc
adddefgcc
hhhdifggg
hdddifffg
hhhiifffg
hihiifffg
iiiiiiggg
--- Solution ---
aAbBbbbcc
adddbbBcC
adEeEcccc
AdddefgCc
hhhDiFggg
hDddifffG
hhhiIfFfg
HiHiifffg
iiiiiIgGg
--- Input ---
aaabbbccc
aaaabbccc
aaaddbcce
ffddddcce
ffffddeee
fgffdheee
fggfhhhee
iggggheee
iiigggggg
--- Solution ---
aaAbBbccc
AaaabbcCc
aaaDdBcce
fFddddcCe
fffFdDeee
fGffdheeE
fggfHhHee
IggggheeE
iiIgggGgg
There shall be exactly 2 trees per column, and 2 trees per row
таким образом, грубая сила, вероятно, невозможна.