Jest to kontynuacja tablic Count, które tworzą unikalne zestawy . Istotną różnicą jest definicja wyjątkowości.
Rozważ tablicę A
długości n
. Tablica zawiera tylko dodatnie liczby całkowite. Na przykład A = (1,1,2,2)
. Zdefiniujmy f(A)
jako zbiór sum wszystkich niepustych, sąsiadujących pod-macierzy A
. W tym przypadku f(A) = {1,2,3,4,5,6}
. Kroki do produkcji f(A)
są następujące:
Podziemne A
są (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)
. Ich odpowiednie kwoty to 1,1,2,2,2,3,4,4,5,6
. Zestaw, który otrzymujesz z tej listy, to dlatego {1,2,3,4,5,6}
.
Tablicę nazywamy A
unikalną, jeśli nie ma innej tablicy B
o takiej samej długości f(A) = f(B)
, z wyjątkiem A
odwróconej tablicy . Na przykład, f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}
ale nie ma innej tablicy długości, 3
która generowałaby ten sam zestaw sum.
Zadanie
Zadaniem dla danego n
i s
jest policzenie liczby unikalnych tablic o tej długości. Możesz założyć, że s
jest pomiędzy 1
i 9
. Trzeba tylko liczyć tablice, w których elementy są albo liczbą całkowitą, s
albo s+1
. Np. Jeśli s=1
liczone tablice zawierają tylko 1
i 2
. Jednak definicja wyjątkowości odnosi się do każdej innej tablicy o tej samej długości. Konkretny przykład nie[1, 2, 2, 2]
jest wyjątkowy, ponieważ daje taki sam zestaw sum jak .[1, 1, 2, 3]
Należy liczyć odwrotność tablicy, a także samą tablicę (o ile tablica nie jest oczywiście palindromem).
Przykłady
s = 1
, odpowiedzi dla n = 2,3,4,5,6,7,8,9 to:
4, 3, 3, 4, 4, 5, 5, 6
Dla s = 1
, unikatowe tablice długości 4 są
(1, 1, 1, 1)
(2, 1, 1, 2)
(2, 2, 2, 2)
s = 2
, odpowiedzi dla n = 2,3,4,5,6,7,8,9 to:
4, 8, 16, 32, 46, 69, 121, 177
Przykład tablicy, która nie jest unikalna, s = 2
to:
(3, 2, 2, 3, 3, 3).
Ma to ten sam zestaw sum co oba: (3, 2, 2, 2, 4, 3)
i (3, 2, 2, 4, 2, 3)
.
s = 8
, odpowiedzi dla n = 2,3,4,5,6,7,8,9 to:
4, 8, 16, 32, 64, 120, 244, 472
Wynik
W przypadku danego n
kodu kod powinien wyświetlać odpowiedź dla wszystkich wartości s
od 1
do 9
. Twój wynik jest najwyższą wartością, n
której wypełnienie następuje w ciągu jednej minuty.
Testowanie
Będę musiał uruchomić Twój kod na moim komputerze z Ubuntu, więc podaj możliwie szczegółowe instrukcje dotyczące tego, jak skompilować i uruchomić kod.
Tabela liderów
- n = 13 autorstwa Christian Sievers w Haskell (42 sekundy)
s
? Co to reprezentuje?