Diese Frage hat einen ähnlichen Aufbau wie " Ein Array suchen", das zu einer Reihe von Summen passt, obwohl sich seine Ziele stark unterscheiden.
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.
Wir werden nur Arrays betrachten, bei denen die Elemente entweder eine bestimmte Ganzzahl soder sind s+1. ZB wenn s=1die Arrays nur 1und enthalten würden 2.
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 sollten nicht die Umkehrung eines Arrays sowie das Array selbst zählen.
Beispiele
s = 1ist die Antwort immer n+1.
s = 2Die Antworten zählen von n = 1oben:
2,3,6,10,20,32,52,86
s = 8Die Antworten zählen von n = 1oben:
2,3,6,10,20,36,68,130
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 = 24 von Anders Kaseorg in Rust (34 Sekunden)
- n = 16 von Ourous in Clean (36 Sekunden)
- n = 14 von JRowan in Common Lisp (49 Sekunden)