這篇文章主要介紹Golang算法問題之整數(shù)拆分如何實(shí)現(xiàn),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出費(fèi)縣免費(fèi)做網(wǎng)站回饋大家。
具體如下:
一個(gè)整數(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)
輸入:一個(gè)整數(shù)N(1<=N<=1000000)。
輸出:f(n)
輸入數(shù)據(jù)如果超出范圍,輸出-1。
樣例輸入:
7
樣例輸出:
6
代碼實(shí)現(xiàn):
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,1種拆分方式 if n == 1 { return 1 } //2=2,2=1+1,2種拆分方式 if n == 2 { return 2 } //n>=3 //保存已經(jīng)計(jì)算出來的數(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] }
以上是“Golang算法問題之整數(shù)拆分如何實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!