整數劃分
time limit: 1000 ms memory limit: 32768 k
total submit: 143(109 users) total accepted: 115(104 users) rating: special judge: no
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+1+1; 2+1+1+1+1; 1+1+1+1+1+1.
input
多組測試資料,輸入到檔案結束,每組資料報含乙個正整數n(n<=40)
output
輸出n的不同劃分個數。
sample input 3 6
sample output
3 11
hint
source
2014 winter holiday contest 3
【題目分析】用dp[i][j]表示將i拆分成若干個數字,最大的那個數字不超過j的方案數。那麼有兩種情況,第一種是最後乙個數不超過j-1,此時方案數是dp[i][j-1],否則數字剛好是j,此時方案數是dp[i-j][j],所以dp[i][j]=dp[i][j-1]+dp[i-j][j]。
最後的dp[n][n]就是答案。
【ac**】
#include
#include
#include
using
namespace
std;
int dp[1005][1005];
void init(int n,int m)
for(int i=2;i<=n;i++)
else
if(ielse}}
}int main()
return
0;}
哈理工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 ...
第十七周 C語言 oj(2004)
煙台大學計算機學院 2016 完成日期 2016年12月24日 版本號 v1.0 includeint main month,year,day,n int i scanf d n while n int sum 0 易錯點,每次迴圈sum的值必須是0 scanf d d d year,month,d...
杭電OJ 2004 成績轉換
problem description 輸入乙個百分制的成績t,將其轉換成對應的等級,具體轉換規則如下 90 100為a 80 89為b 70 79為c 60 69為d 0 59為e input 輸入資料有多組,每組佔一行,有乙個整數組成。output 對於每組輸入資料,輸出一行。如果輸入資料不在0...