經典 dp 數分解

2022-05-08 08:54:33 字數 1200 閱讀 6373

經典dp

題意將數分解,輸出分解的數量

//6 = 5 + 1

//6 = 4 + 2

//6 = 4 + 1 +1

//6 = 3 + 3

//6 = 3 + 2 +1

//6 = 2 + 2 + 2

//6 = 2 + 2 + 1 + 1

//6 = 2 + 1 + 1 + 1 + 1

//6 = 1 + 1 + 1 + 1 + 1

發現6分解後的第乙個數都比前乙個數小,則定義dp[r][x]

dp[r][x]表示 x分解,第一數為r的情況 ,且rdp[5][6]表示將6分解,乙個分解數是5的情況

狀態轉移方程

dp[r][x] = £dp[k][x-r](1<=k<=r)

/*界限條件

dp[1][*]=1

dp[x][x]=1*/

時間複雜度 o(n^3)

空間複雜度o(n^2)

剛開始以為資料很大,用dp,後來仔細看了ppt,額》..<

//

programming dp 數分解

//6 = 5 + 1

//6 = 4 + 2

//6 = 4 + 1 +1

//6 = 3 + 3

//6 = 3 + 2 +1

//6 = 2 + 2 + 2

//6 = 2 + 2 + 1 + 1

//6 = 2 + 1 + 1 + 1 + 1

//6 = 1 + 1 + 1 + 1 + 1

/*界限條件

dp[1][*]=1

dp[x][x]=1

*/#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 1e2+10

;int

dp[maxn][maxn];

intmain()

for(int i=1;i)

for(int i=2;i)

}intn,sum;

while(cin>>n)

//cin>>i;

return0;

}

view code

java經典演算法4 質因數分解

題目 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整...

1215 素數分解

素數分解 time limit 1000ms memory limit 65536k total submit 16 accepted 16 description 在這裡,我們要對乙個正整數進行分解,我們通常說的分解是指求乙個數的質因數,但是,我們發現有些數字可以分解成若干個質數的和,有趣的事,有...

正整數分解

程式整體思路 分解就是乙個數減1,這個數後面的數加1 一次分解之後 找到最後乙個比1大的元素座標,然後與上一次相比,如果座標發生了偏移,那麼會發生向後偏移,說明又開始有乙個數需要分解,這個時候需要增加乙個元素,該情況下其實就是新出現了2 此時這個座標是2所在的位置 將2分解完畢之後,再繼續找比1大的...