放蘋果與整數劃分問題(
by幻星總結)
以下均假設
m>n,
對於m<=n
情況請程式設計時自己注意
設h(m,n)表示m
個數分成
n分,允許某分為
0
設g(m,n)表示m
個數分成
n分,不允許某分為
0
於是兩者關係為
h(m,n)=g(m+n,n)
下面給出兩種方法求
h(m,n),g(m,n)
關於自身的遞迴公式(一
)利用h(m,n)=sum(g(m,i),i=1..n)
(a)求
h(m,n)
的遞迴公式
h(m,n)=sum(g(m,i),i=1..n)
=sum(h(m-i,i),i=1..n)
=h(m-n,n)+ sum(h(m-i,i),i=1..n-1)
=h(m-n,n)+h(m,n-1)
(b)求
g(m,n)
的遞迴公式
g(m,n)=h(m-n,n)
=sum(g(m-n,i),i=1..n)
=g(m-n,n)+ sum(g(m-n,i),i=1..n-1)
=g(m-n,n)+ sum(g((m-1)-(n-1),i),i=1..n-1)
=g(m-n,n)+g(m-1,n-1)
(二)直接從意義上獲得遞迴公式
(a)求
h(m,n)
的遞迴公式
h(m,n)
可以分為至少一分為空
h(m,n-1)
和一分都不為空
h(m-n,n)
h(m,n)=h(m-n,n)+h(m,n-1)
(b)求
g(m,n)
的遞迴公式
g(m,n)
可以分為至少一分為1即
g(m-1,n-1)
和一分都不為1即
g(m-n,n)
g(m,n)=g(m-n,n)+g(m-1,n-1)
遞迴關係有了,就可以dp了
整數劃分問題(放蘋果問題)(遞迴)
將正整數n 表示成一系列正整數之和,n n1 n2 nk,其中n1 n2 nk 1 k 1 正整數n 的這種表示稱為正整數n 的劃分。正整數n 的不同的劃分個數稱為正整數n 的劃分數。標準的輸入包含若干組測試資料。每組測試資料是乙個整數n 0 n 50 對於每組測試資料,輸出n的劃分數。5,4 1,...
簡單整數劃分與放蘋果問題思考(遞迴)
這兩個問題幾乎是相同的,但是以放蘋果的方式來思考問題明顯會更易理解。下面先看一下兩個問題的描述。整數劃分 描述 將正整數n 表示成一系列正整數之和,n n1 n2 nk,其中n1 n2 nk 1 k 1 正整數n 的這種表示稱為正整數n 的劃分。正整數n 的不同的劃分個數稱為正整數n 的劃分數。分蘋...
pku 1664 放蘋果 整數劃分
題目 放蘋果 description 把m個同樣的蘋果放在n個 同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。input 第一行是測試資料的數目t 0 t 20 以下每行均包含二個整數m和n,以空格分開。1 m,n 10。output 對...