Dies ist eine Fortsetzung von Count-Arrays, die eindeutige Sätze erstellen . Der wesentliche Unterschied ist die Definition der Einzigartigkeit.
Betrachten Sie ein Array Avon Länge n. Das Array enthält nur positive Ganzzahlen. Zum Beispiel A = (1,1,2,2). Definieren wir f(A)als die Menge der Summen aller nicht leeren zusammenhängenden Subarrays von A. In diesem Fall f(A) = {1,2,3,4,5,6}. Die zu produzierenden Schritte f(A) sind wie folgt:
Die Subarrays von Asind (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2). Ihre jeweiligen Beträge sind 1,1,2,2,2,3,4,4,5,6. Das Set, das Sie aus dieser Liste erhalten, ist daher {1,2,3,4,5,6}.
Wir nennen ein Array A eindeutig, wenn es kein anderes Array Bmit der gleichen Länge gibt f(A) = f(B), außer dem Aumgekehrten Array . Zum Beispiel, f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}aber es gibt kein anderes Längenarray 3, das den gleichen Satz von Summen erzeugt.
Aufgabe
Die Aufgabe für eine gegebene nund sist es, die Anzahl der eindeutigen Arrays dieser Länge zu zählen. Sie können davon ausgehen, dass szwischen 1und 9. Sie müssen nur Arrays zählen, bei denen die Elemente entweder eine bestimmte Ganzzahl soder eine bestimmte Ganzzahl sind s+1. ZB wenn s=1die Arrays, die Sie zählen, nur 1und enthalten 2. Die Definition der Eindeutigkeit bezieht sich jedoch auf jedes andere Array gleicher Länge. Ein konkretes Beispiel [1, 2, 2, 2]ist nicht eindeutig, da es die gleichen Summen wie ergibt [1, 1, 2, 3].
Sie sollten die Umkehrung eines Arrays sowie das Array selbst zählen (solange das Array natürlich kein Palindrom ist).
Beispiele
s = 1Die Antworten für n = 2,3,4,5,6,7,8,9 lauten:
4, 3, 3, 4, 4, 5, 5, 6
Denn s = 1die eindeutigen Arrays der Länge 4 sind
(1, 1, 1, 1)
(2, 1, 1, 2)
(2, 2, 2, 2)
s = 2Die Antworten für n = 2,3,4,5,6,7,8,9 lauten:
4, 8, 16, 32, 46, 69, 121, 177
Ein Beispiel für ein Array, das nicht eindeutig s = 2ist, ist:
(3, 2, 2, 3, 3, 3).
Dies hat die gleichen Summen wie: (3, 2, 2, 2, 4, 3)und (3, 2, 2, 4, 2, 3).
s = 8Die Antworten für n = 2,3,4,5,6,7,8,9 lauten:
4, 8, 16, 32, 64, 120, 244, 472
Ergebnis
Für einen bestimmten nFall sollte Ihr Code die Antwort für alle Werte von svon 1bis ausgeben 9. Ihre Punktzahl ist der höchste Wert, nfür den dies in einer Minute abgeschlossen ist.
Testen
Ich muss Ihren Code auf meinem Ubuntu-Computer ausführen. Geben Sie daher so detaillierte Anweisungen wie möglich zum Kompilieren und Ausführen Ihres Codes an.
Bestenliste
- n = 13 von Christian Sievers in Haskell (42 Sekunden)
s? Was stellt es dar?