Drucken Sie alle möglichen Arten aus, um N als Summe von zwei zu schreiben

Blog

Drucken Sie alle möglichen Arten aus, um N als Summe von zwei zu schreiben

Gegeben eine ganze Zahl n , besteht die Aufgabe darin, alle möglichen Arten zu drucken, in denen n kann als Summe von zwei oder mehr positiven ganzen Zahlen geschrieben werden.

Beispiele:

Eingang: _ N = 4_

Ausgabe:

1 1 1 1

1 1 2

1 3

2 2

Eingang: _ N = 3_

Ausgabe:

1 1 1

1 2

Empfohlen: Bitte versuchen Sie Ihren Ansatz auf {HIER} zuerst, bevor Sie mit der Lösung fortfahren.

Sich nähern: Die Idee ist zu verwenden Rekursion um dieses Problem zu lösen. Die Idee ist, jede ganze Zahl aus zu betrachten 1 bis N so dass die Summe N bei jedem rekursiven Aufruf um diese Zahl reduziert werden kann und wenn bei irgendeinem rekursiven Aufruf N auf Null reduziert wird, dann geben wir die im Vektor gespeicherte Antwort aus. Unten sind die Schritte für die Rekursion:

  1. Holen Sie sich die Nummer n deren Summe in zwei oder mehr positive ganze Zahlen zerlegt werden muss.
  2. Vom Wert rekursiv iterieren 1 bis N als Index ich :
  • Basisfall: Wenn der rekursiv aufgerufene Wert 0 , dann den aktuellen Vektor ausgeben, da dies die Möglichkeit ist, N in zwei oder mehr positive ganze Zahlen aufzuteilen.
if (n == 0) printVector(arr);
  • Rekursiver Aufruf: Wenn der Basisfall nicht erfüllt ist, dann rekursiv iterieren von [ich, N – ich] . Drücken Sie das aktuelle Element J in den Vektor (sagen wir arr ) und rekursiv für den nächsten Index iterieren und nach dem diese Rekursion endet, dann pop das Element J zuvor eingefügt:
for j in range[i, N]: arr.push_back(j); recursive_function(arr, j + 1, N - j); arr.pop_back(j);

#backtracking #gierig #arrays #algorithmen

www.geeksforgeeks.org

Drucken Sie alle möglichen Arten aus, um N als Summe von zwei zu schreiben

Ein Informatikportal für Computerfreaks. Es enthält gut geschriebene, gut durchdachte und gut erklärte Informatik- und Programmierartikel, Quiz und Praxis/Wettbewerb.