Alle Herausforderungen
Mittel 0 gelöst 0% Erfolgsquote

Zwei nicht angreifende Springer

Zähle sichere Platzierungen von zwei Springern für jede quadratische Brettgröße.

Für jede Brettgröße k von 1 bis n sollst du die ungeordneten Paare verschiedener Felder auf einem k×k-Brett zählen, auf denen zwei Springer einander nicht angreifen können. Ein Springer zieht zwei Felder in einer Richtung und eines in der anderen.

. x . x .
x . . . x
. . K . .
x . . . x
. x . x .

K markiert einen Springer und x dessen mögliche Zielfelder, sofern diese auf dem Brett liegen. Das Vertauschen der beiden Springer ergibt keine neue Platzierung.

Implementiere two_knights(n).

Eingabe

n: Die größte zu betrachtende Brettgröße.

Ausgabe

Gib n Zahlen in Reihenfolge zurück, für die Brettgrößen 1 bis n.

Einschränkungen

1 ≤ n ≤ 10.000. Die Anzahlen passen in vorzeichenbehaftete 64-Bit-Ganzzahlen.

Beispiele

Beispiel 1
Eingabe:
n = 3

Erwartete Ausgabe:
expected = [0, 6, 28]
Eingabe:
long long n = 3;

Erwartete Ausgabe:
std::vector<long long> expected = {0, 6, 28};
Eingabe:
long n = 3;

Erwartete Ausgabe:
long[] expected = new long[] {0, 6, 28};

Erläuterung

Ein 1×1-Brett kann keine zwei Springer aufnehmen. Ein 2×2-Brett hat sechs Paare und keine Angriffe. Ein 3×3-Brett hat 36 Paare, von denen acht angreifen, sodass 28 übrig bleiben.

Beispiel 2
Eingabe:
n = 1

Erwartete Ausgabe:
expected = [0]
Eingabe:
long long n = 1;

Erwartete Ausgabe:
std::vector<long long> expected = {0};
Eingabe:
long n = 1;

Erwartete Ausgabe:
long[] expected = new long[] {0};

Erläuterung

Es werden zwei verschiedene Felder benötigt, aber das Brett hat nur eines.

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.