English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Este exemplo descreve a implementação do problema de divisão de inteiros em Golang. Partilho com vocês para referência, conforme detalhado a seguir:
Um inteiro pode ser dividido em2da potência, por exemplo:
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
maneiras diferentes de dividir6Existem
Por exemplo:4pode ser dividido em:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。
Usar f(n) para representar o número de maneiras diferentes de dividir n, por exemplo, f(7)=6.
Requisito: Escreva um programa para ler n (não exceder1000000),saída f(n)
Entrada: um inteiro N(1<=N<=1000000).
Saída: f(n)
Se os dados de entrada estiverem fora do intervalo, a saída será-1。
Entrada de exemplo:
7
Saída de exemplo:
6
Implementação do código:
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,1modo de divisão if n == 1 { return 1 } //2=2,2=1+1,2modo de divisão if n == 2 { return 2 } //n>=3 //Salvar os valores calculados data := make([]int, n+1) data[0] = 0 //Este valor não tem significado e serve apenas como marcador de posição data[1] = 1 data[2] = 2 for i := 3; i <= n; i++ { if i%2 == 0 { //par data[i] = data[i-2] + data[i/2] } else { //ímpar data[i] = data[i-1] } } return data[n] }
Espero que o conteúdo deste artigo ajude a todos a programar em Go.
Declaração: o conteúdo deste artigo é extraído da Internet, pertence ao respectivo proprietário dos direitos autorais, o conteúdo é contribuído e carregado voluntariamente pelos usuários da Internet, o site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidades legais relacionadas. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar e forneça provas. Se confirmado, o site deletará imediatamente o conteúdo suspeito de violação de direitos autorais.)