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

Analyse de la méthode d'analyse de décomposition des entiers dans les problèmes d'algorithmes Golang

Ce texte illustre l'implémentation de la méthode de décomposition des entiers dans l'algorithmique de Golang. Partagé avec vous pour votre référence, voici les détails :

Un entier peut toujours être divisé en2puissances, par exemple :

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

Il y a au total6façons différentes de diviser

Par exemple :4peut être divisé en :4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。

f(n) représente le nombre de façons de diviser n, par exemple f(7)=6.

Exigences : écrire un programme pour lire n (pas plus de1000000),sortie f(n)

Entrée : un entier N (1<=N<=1000000).

Sortie : f(n)

Si les données d'entrée dépassent la gamme, la sortie est-1。

Entrée d'exemple :

7

Sortie d'exemple :

6

Implémentation du code :

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,1façons de diviser
    if n == 1 {
        return 1
    }
    //2=2,2=1+1,2façons de diviser
    if n == 2 {
        return 2
    }
    //n>=3
    //Enregistrer les valeurs calculées précédemment
    data := make([]int, n+1)
    data[0] = 0 //Cette valeur n'a pas de sens, elle sert uniquement de remplacement
    data[1] = 1
    data[2] = 2
    for i := 3; i <= n; i++ {
        if i%2 == 0 {
            //pair
            data[i] = data[i-2] + data[i/2]
        } else {
            //impair
            data[i] = data[i-1]
        }
    }
    return data[n]
}

J'espère que cet article peut aider à la conception de programmes Go en langage.

Déclaration : le contenu de cet article est issu du réseau, propriété des auteurs respectifs, contribué et téléversé par les utilisateurs d'Internet de manière spontanée. Ce site ne détient pas de droits de propriété, n'a pas été édité par l'homme, et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droits d'auteur, vous êtes invité à envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois confirmée, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)

Vous pourriez aussi aimer