簡單的整數劃分問題
總時間限制:
100ms
記憶體限制:
65536kb 描述
將正整數n 表示成一系列正整數之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。
正整數n 的這種表示稱為正整數n 的劃分。正整數n 的不同的劃分個數稱為正整數n 的劃分數。
輸入標準的輸入包含若干組測試資料。每組測試資料是乙個整數n(0 < n <= 50)。
輸出對於每組測試資料,輸出n的劃分數。
樣例輸入
5
樣例輸出
7
提示5, 4+1, 3+2, 3+1+1, 2+2+1, 2+1+1+1, 1+1+1+1+1
解題方法:
1、閱讀題意後,我們可以發現這明顯是一道遞迴問題。那麼解決這道題的關鍵是什麼?
·按照提示保證在前面的數比它後面的數都大,避免發生像2+3;3+2;這樣的重複計算。如此我們應該使用if語句進行判斷。
#include#includeusing namespace std;
int ways = 1;
void way(int nums,int n, int i)
num[n]--;
num[i]++;
if(num[n]<=0)
else
}if(temp == 1)
way(num,n,i);
way(num,i,i+1); }}
int main()
; cin >> nums[0];
way(nums,0,1);
cout << ways << endl;
ways = 1;
} return 0;
}
7215 簡單的整數劃分問題
簡介 總時間限制 100ms 記憶體限制 65536kb描述將正整數n 表示成一系列正整數之和,n n1 n2 nk,其中n1 n2 nk 1 k 1 正整數n 的這種表示稱為正整數n 的劃分。總時間限制 100ms 記憶體限制 65536kb 描述將正整數n 表示成一系列正整數之和,n n1 n2...
遞迴求解整數的分劃問題
整數劃分問題是演算法中的乙個經典命題之一,有關這個問題的講述在講解到遞迴時基本都涉及到。所謂整數劃分,是指把乙個正整數n寫成如下形式 n m1 m2 m3 mi 其中mi為正整數,並且1 mi n 則為n的乙個劃分。如果 中的最大值不超過m,即max m,則稱它屬於n的乙個m劃分。這裡我們記n的m劃...
openjudge 簡單的整數劃分問題
100ms 記憶體限制 65536kb 描述 將正整數n 表示成一系列正整數之和,n n1 n2 nk,其中n1 n2 nk 1 k 1 正整數n 的這種表示稱為正整數n 的劃分。正整數n 的不同的劃分個數稱為正整數n 的劃分數。輸入標準的輸入包含若干組測試資料。每組測試資料是乙個整數n 0 n 5...