HRBUST 2004 整數劃分

2021-10-09 07:18:03 字數 893 閱讀 3992

將正整數n表示成一系列正整數之和:n=n1+n2+…+nk,其中n1>=n2>=…>=nk>=1。正整數n的這種表示稱為正整數n的劃分。求正整數n的不同劃分個數。例如,正整數6有如下11種不同的劃分:6: 6; 5+1; 4+2; 4+1+1; 3+3; 3+2+1; 3+1+1+1; 2+2+2; 2+2+1+1; 2+1+1+1+1; 1+1+1+1+1+1.

input

多組測試資料,輸入到檔案結束,每組資料報含乙個正整數n(n<=40)

output

輸出n的不同劃分個數。

sample input36

sample output311

f(n,m)代表對n進行劃分,最大數為m的個數

1.( n == 1 | | m== 1 ),這時候 f(n,m)=1;

2. ( n < m ) ,由於n中沒有m,所以f(n,m)=f(n,n);

3. ( n == m ) ,例如對5劃分,最大數為5,可以分為兩種情況,一是劃分為單獨的乙個5,二是劃分為最大為4,即 f(n,m)=1+ f( n , n - 1 ) 。

4.( n > m),這裡分兩種情況,一時有最大數m,二是沒有最大數m。

4.1劃分後有最大數,劃分為,其中x1+x2+x3+.....+xi=n-m。可以轉化為對n-m劃分,最大數為m,f(n,m)=f(n-m,m)

4.2如果劃分後無最大數,則f(n,m)=f(n,m-1)

**:

#include

using

namespace std;

intf

(int n,

int m)

//對n進行劃分,最大數為m

intmain()

}

哈理工OJ 2004 整數劃分(整數劃分問題)

description 將正整數n表示成一系列正整數之和 n n1 n2 nk,其中n1 n2 nk 1。正整數n的這種表示稱為正整數n的劃分。求正整數n的不同劃分個數。例如,正整數6有如下11種不同的劃分 6 6 5 1 4 2 4 1 1 3 3 3 2 1 3 1 1 1 2 2 2 2 2 ...

哈理工OJ 2004 整數劃分(經典dp問題)

整數劃分 time limit 1000 ms memory limit 32768 k total submit 143 109 users total accepted 115 104 users rating special judge no description 將正整數n表示成一系列正整...

整數劃分(劃分dp)總結

寫了幾個題發現整數劃分是一類題,而不是一道題。具體題型 1 n相同元素放入m個相同的盤子 盤子允許為空 例題 放蘋果 poj 1664設dp i j 為 j 個元素放入i個盤子轉移方程 dp i j dp i 1 j 新新增乙個盤子,盤子為空 dp i j dp i j i i個盤子 各取出乙個 2...