English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Analyse der Methode zur Umsetzung der Integer-Zerlegung in Golang-Algorithmen

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.)

Vielleicht gefällt dir auch