時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:3 描述
將正整數n表示成一系列正整數之和:n=n1+n2+…+nk,
其中n1≥n2≥…≥nk≥1,k≥1。
正整數n的這種表示稱為正整數n的劃分。求正整數n的不
同劃分個數。
例如正整數6有如下11種不同的劃分:
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。
輸入第一行是測試資料的數目m(1<=m<=10)。以下每行均包含乙個整數n(1<=n<=10)。
輸出輸出每組測試資料有多少種分法。
樣例輸入
16
樣例輸出
11
**[苗棟棟]原創
上傳者思路:這題主要運用深搜,因為給出的n的值有限制,適合深搜,且不會超時。具體的**中有解釋。
#includeint n,sum;
void dfs(int m,int s,int k)
for(int i=m; i>=1; i--)
return ;
}int main()
{ int t;
scanf("%d",&t);
while(t--)
{sum=2;
scanf("%d",&n);
if(n==1)sum=1;
for(int i=2; i
nyoj整數劃分(二)
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 把乙個正整數m分成n個正整數的和,有多少種分法?例 把5分成3個正正數的和,有兩種分法 1 1 3 1 2 2 輸入 第一行是乙個整數t表示共有t組測試資料 t 50 每組測試資料都是兩個正整數m,n,其中 1 n m 100 ...
NYOJ 整數劃分(二)
時間限制 1秒 記憶體限制 128兆 題目描述 把乙個正整數m分成n個正整數的和,有多少種分法?例 把5分成3個正正數的和,有兩種分法 1 1 3 1 2 2 輸入第一行是乙個整數t表示共有t組測試資料 t 50 每組測試資料都是兩個正整數m,n,其中 1 n m 100 分別表示要拆分的正數和拆分...
nyoj 90 整數劃分
整數劃分問題是演算法中的乙個經典命題之一,有關這個問題的講述在講解到遞迴時基本都將涉及。所謂整數劃分,是指把乙個正整數n寫成如下形式 n m1 m2 mi 其中mi為正整數,並且1 mi n 則為n的乙個劃分。如果中的最大值不超過m,即max m1,m2,mi m,則稱它屬於n的乙個m劃分。這裡我們...