Golang算法問題之整數(shù)拆分實現(xiàn)方法分析
本文實例講述了Golang算法問題之整數(shù)拆分實現(xiàn)方法。分享給大家供大家參考,具體如下:
一個整數(shù)總可以拆分為2的冪的和,例如:
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
總共有6種不同的拆分方式。
再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。
用f(n)表示n的不同拆分的種數(shù),例如f(7)=6.
要求編寫程序,讀入n(不超過1000000),輸出f(n)
輸入:一個整數(shù)N(1<=N<=1000000)。
輸出:f(n)
輸入數(shù)據(jù)如果超出范圍,輸出-1。
樣例輸入:
7
樣例輸出:
6
代碼實現(xiàn):
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,1種拆分方式
if n == 1 {
return 1
}
//2=2,2=1+1,2種拆分方式
if n == 2 {
return 2
}
//n>=3
//保存已經(jīng)計算出來的數(shù)值
data := make([]int, n+1)
data[0] = 0 //該值無意義純占位作用
data[1] = 1
data[2] = 2
for i := 3; i <= n; i++ {
if i%2 == 0 {
//偶數(shù)
data[i] = data[i-2] + data[i/2]
} else {
//奇數(shù)
data[i] = data[i-1]
}
}
return data[n]
}
希望本文所述對大家Go語言程序設計有所幫助。
相關(guān)文章
使用client-go工具調(diào)用kubernetes API接口的教程詳解(v1.17版本)
這篇文章主要介紹了使用client-go工具調(diào)kubernetes API接口(v1.17版本),本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08golang 數(shù)組去重,利用map的實現(xiàn)
這篇文章主要介紹了golang 數(shù)組去重,利用map的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04golang validator庫參數(shù)校驗實用技巧干貨
這篇文章主要為大家介紹了validator庫參數(shù)校驗實用技巧干貨,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2022-04-04Go基礎(chǔ)教程系列之數(shù)據(jù)類型詳細說明
這篇文章主要介紹了Go基礎(chǔ)教程系列之數(shù)據(jù)類型詳細說明,需要的朋友可以參考下2022-04-04golang中按照結(jié)構(gòu)體的某個字段排序?qū)嵗a
在任何編程語言中,關(guān)乎到數(shù)據(jù)的排序都會有對應的策略,下面這篇文章主要給大家介紹了關(guān)于golang中按照結(jié)構(gòu)體的某個字段排序的相關(guān)資料,需要的朋友可以參考下2022-05-05