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