欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang算法問(wèn)題之整數(shù)拆分實(shí)現(xiàn)方法分析

 更新時(shí)間:2017年02月17日 14:40:11   作者:books1958  
這篇文章主要介紹了Golang算法問(wèn)題之整數(shù)拆分實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Go語(yǔ)言數(shù)值運(yùn)算與數(shù)組遍歷相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Golang算法問(wèn)題之整數(shù)拆分實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

一個(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.

要求編寫(xiě)程序,讀入n(不超過(guò)1000000),輸出f(n)

輸入:一個(gè)整數(shù)N(1<=N<=1000000)。

輸出:f(n)

輸入數(shù)據(jù)如果超出范圍,輸出-1。

樣例輸入:

7

樣例輸出:

6

代碼實(shí)現(xiàn):

復(fù)制代碼 代碼如下:
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ì)算出來(lái)的數(shù)值
    data := make([]int, n+1)
    data[0] = 0 //該值無(wú)意義純占位作用
    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]
}

希望本文所述對(duì)大家Go語(yǔ)言程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 使用client-go工具調(diào)用kubernetes API接口的教程詳解(v1.17版本)

    使用client-go工具調(diào)用kubernetes API接口的教程詳解(v1.17版本)

    這篇文章主要介紹了使用client-go工具調(diào)kubernetes API接口(v1.17版本),本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • golang 數(shù)組去重,利用map的實(shí)現(xiàn)

    golang 數(shù)組去重,利用map的實(shí)現(xiàn)

    這篇文章主要介紹了golang 數(shù)組去重,利用map的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • go語(yǔ)言寫(xiě)的簡(jiǎn)要數(shù)據(jù)同步工具詳解

    go語(yǔ)言寫(xiě)的簡(jiǎn)要數(shù)據(jù)同步工具詳解

    作為go-etl工具的作者,想要安利一下這個(gè)小巧的數(shù)據(jù)同步工具,它在同步百萬(wàn)級(jí)別的數(shù)據(jù)時(shí)表現(xiàn)極為優(yōu)異,基本能在幾分鐘完成數(shù)據(jù)同步,這篇文章主要介紹了go語(yǔ)言寫(xiě)的簡(jiǎn)要數(shù)據(jù)同步工具,需要的朋友可以參考下
    2024-07-07
  • Golang TCP粘包拆包問(wèn)題的解決方法

    Golang TCP粘包拆包問(wèn)題的解決方法

    這篇文章主要給大家介紹了Golang TCP粘包拆包問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Golang具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • golang validator庫(kù)參數(shù)校驗(yàn)實(shí)用技巧干貨

    golang validator庫(kù)參數(shù)校驗(yàn)實(shí)用技巧干貨

    這篇文章主要為大家介紹了validator庫(kù)參數(shù)校驗(yàn)實(shí)用技巧干貨,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Go基礎(chǔ)教程系列之?dāng)?shù)據(jù)類(lèi)型詳細(xì)說(shuō)明

    Go基礎(chǔ)教程系列之?dāng)?shù)據(jù)類(lèi)型詳細(xì)說(shuō)明

    這篇文章主要介紹了Go基礎(chǔ)教程系列之?dāng)?shù)據(jù)類(lèi)型詳細(xì)說(shuō)明,需要的朋友可以參考下
    2022-04-04
  • 深入了解Golang為什么需要超時(shí)控制

    深入了解Golang為什么需要超時(shí)控制

    本文將介紹為什么需要超時(shí)控制,然后詳細(xì)介紹Go語(yǔ)言中實(shí)現(xiàn)超時(shí)控制的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-05-05
  • 深入理解Go語(yǔ)言的容器包

    深入理解Go語(yǔ)言的容器包

    Go語(yǔ)言的container標(biāo)準(zhǔn)包包含了堆(heap)、鏈表(list)和環(huán)(ring)三種數(shù)據(jù)結(jié)構(gòu),本文就來(lái)詳細(xì)的介紹一下這三種的使用,感興趣的可以了解一下
    2024-10-10
  • 基于Golang開(kāi)發(fā)一個(gè)輕量級(jí)登錄庫(kù)/框架

    基于Golang開(kāi)發(fā)一個(gè)輕量級(jí)登錄庫(kù)/框架

    幾乎每個(gè)項(xiàng)目都會(huì)有登錄,退出等用戶(hù)功能,而登錄又不單僅僅是登錄,我們要考慮很多東西。所以本文就來(lái)用Golang開(kāi)發(fā)一個(gè)輕量級(jí)登錄庫(kù)/框架吧
    2023-05-05
  • golang中按照結(jié)構(gòu)體的某個(gè)字段排序?qū)嵗a

    golang中按照結(jié)構(gòu)體的某個(gè)字段排序?qū)嵗a

    在任何編程語(yǔ)言中,關(guān)乎到數(shù)據(jù)的排序都會(huì)有對(duì)應(yīng)的策略,下面這篇文章主要給大家介紹了關(guān)于golang中按照結(jié)構(gòu)體的某個(gè)字段排序的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評(píng)論