NYOJ 90 整數劃分

2021-09-30 13:43:55 字數 1054 閱讀 7145

題目連線

描述

將正整數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)。。

樣例輸入:1 6

輸出
輸出每組測試資料有多少種分法。

樣例輸出:

首先利用好他給的(n1≥n2≥…≥nk≥1,k≥1。)這條件(提示)

因為從小到大的順序進行的話是會有很複雜的麻煩的

而從大到小正好可以使用遞迴的方法(n範圍1-10,時間足夠)

後乙個數一定<=前乙個數

終止條件就是所有的數字之和=輸入的數字

遞迴至首數字為1

#include using namespace std;

int cnt; //全域性計數

int n;

/**遞迴函式fun(n,m)

n: 遞迴的首數字,eg從6,5,4...1

m: 前面推斷出的數字之和,是判斷終止的條件

*/void fun(int n,int m)else

if(add == n)

}}int main()

return

0;}

result

accepted

time

8msmemory

240language

g++

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