nyoj 571 整數劃分 三

2021-08-18 21:18:31 字數 975 閱讀 2921

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:5描述

整數劃分是乙個經典的問題。請寫乙個程式,完成以下要求。輸入

多組輸入資料。

每組輸入是兩個整數n和k。(1 <= n <= 50, 1 <= k <= n)

輸出對於輸入的 n,k;

第一行: 將n劃分成若干正整數之和的劃分數。

第二行: 將n劃分成k個正整數之和的劃分數。

第三行: 將n劃分成最大數不超過k的劃分數。

第四行: 將n劃分成若干個 奇正整數之和的劃分數。

第五行: 將n劃分成若干不同整數之和的劃分數。

第六行: 列印乙個空行

樣例輸入

5 2

樣例輸出

723

33

提示

1.將5劃分成若干正整數之和的劃分為: 5, 4+1, 3+2, 3+1+1, 2+2+1, 2+1+1+1, 1+1+1+1+1

2.將5劃分成2個正整數之和的劃分為: 3+2, 4+1

3.將5劃分成最大數不超過2的劃分為: 1+1+1+1+1, 1+1+1+2, 1+2+2

4.將5劃分成若干 奇正整數之和的劃分為: 5, 1+1+3, 1+1+1+1+1

5.將5劃分成若干不同整數之和的劃分為: 5, 1+4, 2+3

五類整數劃分的結合

#include#includeint dp[110][110];//emmm...多次使用吧

void dp1(int n){//分解成若干正整數的劃分個數

memset(dp,0,sizeof(dp));

for(int i=1;i<=n;i++){

for(int j=1;j<=n;j++){

if(i==j)

dp[i][j]=dp[i][j-1]+1;

else if(j

NYOJ 571 整數劃分 三

描述 整數劃分是乙個經典的問題。請寫乙個程式,完成以下要求。輸入 每組輸入是兩個整數n和k。1 n 50,1 k n 輸出對於輸入的 n,k 第一行 將n劃分成若干正整數之和的劃分數。第二行 將n劃分成k個正整數之和的劃分數。第三行 將n劃分成最大數不超過k的劃分數。第四行 將n劃分成若干個 奇正整...

NYOJ 571 整數劃分 三

第一行 將n劃分成若干正整數之和的劃分數。狀態轉移方程 dp i j 和為i 最大數不超過j的拆分數 dp i j 可以分為兩種情況 1 拆分項至少有乙個j 2 拆分項乙個j也沒有 dp i j dp i j j dp i j 1 第二行 將n劃分成k個正整數之和的劃分數。dp n k k 相當於把...

nyoj 571 整數劃分 三 (遞迴)

描述 整數劃分是乙個經典的問題。請寫乙個程式,完成以下要求。當n 1時,不論m的值為多少 m 0 只有一種劃分即 當m 1時,不論n的值為多少,只有一種劃分即n個1,當n m時,由於最大值只能是n,所以此時f n,m f n,n 當n m時,根據劃分中是否包含n,可以分為兩種情況 1 劃分中包含n的...