經典dp
題意將數分解,輸出分解的數量
//6 = 5 + 1發現6分解後的第乙個數都比前乙個數小,則定義dp[r][x]//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[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,額》..<
//view codeprogramming 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;
}
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大的...