To pytanie ma podobny zestaw, aby znaleźć tablicę, która pasuje do zestawu sum, chociaż ma zupełnie inne cele.
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.
Rozważymy tylko tablice, w których elementy są albo liczbą całkowitą, s
albo s+1
. Np. Jeśli s=1
tablice zawierają tylko 1
i 2
.
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
.
Nie należy liczyć odwrotności tablicy, a także samej tablicy.
Przykłady
s = 1
, odpowiedź brzmi zawsze n+1
.
s = 2
, odpowiedzi liczone od n = 1
góry to:
2,3,6,10,20,32,52,86
s = 8
, odpowiedzi liczone od n = 1
góry to:
2,3,6,10,20,36,68,130
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 = 24 autorstwa Andersa Kaseorga w Rust (34 sekundy)
- n = 16 przez Ourous in Clean (36 sekund)
- n = 14 według JRowan w Common Lisp (49 sekund)