English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Este artículo ejemplifica la implementación del problema de división de enteros en el lenguaje de programación Golang. Lo compartimos con todos para referencia, como se detalla a continuación:
Un entero siempre se puede dividir en2es
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
En total, la suma de los potencias de6maneras diferentes de dividir.
Por ejemplo:4puede dividirse en:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。
usar f(n) para representar el número de diferentes formas de dividir n, por ejemplo, f(7)=6.
Se requiere escribir un programa para leer n (no superior a1000000),salida f(n)
Entrada: un entero N(1<=N<=1000000).
Salida: f(n)
Si los datos de entrada están fuera de rango, la salida es-1。
Entrada de ejemplo:
7
Salida de ejemplo:
6
Implementación del código:
paquete 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,1maneras de dividir if n == 1 { return 1 } //2=2,2=1+1,2maneras de dividir if n == 2 { return 2 } //n>=3 //Guardar los valores calculados anteriormente data := make([]int, n+1) data[0] = 0 //Este valor no tiene significado, solo actúa como un marcador de posición data[1] = 1 data[2] = 2 for i := 3; i <= n; i++ { if i%2 == 0 { //número par data[i] = data[i-2] + data[i/2] } else { //número impar data[i] = data[i-1] } } return data[n] }
Espero que lo descrito en este artículo pueda ayudar a todos en la programación de lenguajes Go.
Declaración: el contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha procesado editorialmente y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @ para denunciar y proporcione evidencia. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)