English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dieser Artikel beschreibt die Implementierungsmethode der Integer-Zerlegung in Golang-Algorithmen. Hiermit wird allen zur Verfügung gestellt und zur Referenz, wie folgt:
Eine ganze Zahl kann immer in2der Potenz summiert, z.B.:
7=1+2+4
7=1+2+2+2
7=1+1+1+4
7=1+1+1+2+2
7=1+1+1+1+1+2
7=1+1+1+1+1+1+1
von6Es gibt
Zum Beispiel:4kann in die folgenden Arten aufgeteilt werden:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。
f(n) wird verwendet, um die Anzahl der verschiedenen Aufteilungen von n darzustellen, z.B. f(7)=6.
Anforderung: Schreiben Sie ein Programm, das eine Eingabe liest n (nicht größer als1000000),Ausgabe: f(n)
Eingabe: Ein ganzzahliges N(1<=N<=1000000).
Ausgabe: f(n)
Wenn die Eingabedaten den Bereich überschreiten, wird ausgegeben:-1。
Beispiel-Eingabe:
7
Beispiel-Ausgabe:
6
Code-Implementierung:
package huawei import ( "fmt" ) func Test08Base() { input := 1000000 output := numberSplit(input) fmt.Println(output) } func numberSplit(n int) int { if n < 1 || n > 1000000 { return -1 } //1=1,1Art der Aufteilung if n == 1 { return 1 } //2=2,2=1+1,2Art der Aufteilung if n == 2 { return 2 } //n>=3 //Speichern Sie die bereits berechneten Werte data := make([]int, n+1) data[0] = 0 //Dieser Wert hat keine Bedeutung und dient nur als Platzhalter data[1] = 1 data[2] = 2 for i := 3; i <= n; i++ { if i%2 == 0 { //gerade data[i] = data[i-2] + data[i/2] } else { //ungerade data[i] = data[i-1] } } return data[n] }
Es wird gehofft, dass die in diesem Artikel beschriebenen Inhalte allen bei der Programmierung in der Sprache Go helfen.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrecht des jeweiligen Autors. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Diese Website übernimmt keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige Urheberrechtsinhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @, wenn Sie eine Beschwerde einreichen, und fügen Sie relevante Beweise bei. Sobald nachgewiesen, wird diese Website den verdächtigen Inhalten sofort löschen.)