題目:
把乙個整數拆分成的所有情況。
遞迴**:
#include#includeusing namespace std;
int z[11];
int zh(int n,int m)
}
最近在做動態規劃的時候發現這個題目也可以用揹包來些,並且比用遞迴喜惡簡單的多。效率也高很多。
動態轉移方程:dp[i]=dp[i]+dp[i-j];
**如下:
#include#include#include using namespace std;
int main()
{ int t;cin>>t;
while(t--)
{ int n,m;
cin>>n;
int ans[21];
memset(ans,0,sizeof(ans));
ans[0]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i<=j)
ans[j]=ans[j]+ans[j-i];
cout<
nyoj 90 整數劃分
整數劃分問題是演算法中的乙個經典命題之一,有關這個問題的講述在講解到遞迴時基本都將涉及。所謂整數劃分,是指把乙個正整數n寫成如下形式 n m1 m2 mi 其中mi為正整數,並且1 mi n 則為n的乙個劃分。如果中的最大值不超過m,即max m1,m2,mi m,則稱它屬於n的乙個m劃分。這裡我們...
NYOJ 90整數劃分
時間限制 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 ...
NYOJ 90 整數劃分
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 輸入第一行是測試資料的數目m 1 m 10 以下每行均包含乙個整數n 1 n 10 輸出輸出每組測試資料有多少種分法。樣例輸入 1 6樣例輸出 11描述 將正整數n表示成一系列正整數之和 n n1 n2 nk,其中n1 n2 nk 1...