遞迴 OpenJudge 7215 簡單整數劃分

2021-08-08 23:43:00 字數 963 閱讀 2754

簡單的整數劃分問題

總時間限制: 

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...