Golang演算法問題之整數拆分實現方法分析

2022-09-24 21:03:13 字數 879 閱讀 6162

乙個整數總可以拆分為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的不同拆分的種數,例如f(7)=6.

要求編寫程式,讀入n(不程式設計客棧超過1000000),輸出f(n)

輸入:乙個整數n(1<=n<=1000000)。

輸出:f(n)

輸入資料如果超出範圍,輸出-1。

樣例輸入:

樣例輸出:

**實現:

複製** **如下:

package huawei

import (

&n程式設計客棧bsp; "fmt"

)fu程式設計客棧nc test08base()

func numbersplit(n int) int

//1=1,1種拆分方式

if n == 1

//2=2,2=1+1,2種拆分方式

if n == 2

//n>=3

//儲存已經計算出來的數值

data := make(int, n+1)

data[0] = 0 //該值無意義純佔位作用

data[1] = 1

data[2] = 2

for i := 3; i <= n; i++ else

}return data[n]

本文標題: golang演算法問題之整數拆分實現方法分析

本文位址:

演算法基礎 整數拆分問題(Golang實現)

乙個整數總能夠拆分為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 表示...

演算法基礎 整數拆分問題(Golang實現)

乙個整數總能夠拆分為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 表示...

回溯演算法 整數拆分問題

洛谷p2404.簡單的回溯法實現,輸入乙個數字n,求出1到n 1中相加和是n的算式。用乙個ans陣列儲存探索到的每乙個數字,在dfs函式中用減法的形式得到和什麼時候到達了n,到達n也就是temp變為0的時候。同時又根據例項,沒有重複的算式,乙個數字可以用多次,所以i的起始位置要設定乙個start來表...