OpenJudge 006 簡單的整數劃分問題

2021-10-23 03:43:25 字數 1121 閱讀 7932

總時間限制: 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
一些想法:

網上也有很多部落格,在看了之後發現自己還是對於遞迴的用法沒有掌握,其中的將問題劃分為更小規模以及遞迴定義都不是掌握的太好,看到題解之後也發現其實就是蘋果裡放盤子的思想:

將乙個數劃分為比m更小的數的組合的求和,其中分為:

(1)n=1,則無論m取何值都只有一種分法,故是1,故該情況為1;

(2)m=1,同樣,智慧型將乙個數全部劃分為1,也只有一種,故該情況為1;

(3)n(4)n>m;則可以分為包含m和不包含m,a)包含m,則就轉化為n-m的這個數對於m有多少種劃分,即f(n-m,m),b)不包含m則為f(n,m-1),故該情況為f(n-m,m)+f(n,m-1);

(5)n=m,則可分為包含m和包含m兩種,a)包含m,則只有一種分法,就是其本身,b)不包含m,則可以表達為f(n,m-1或n-1),故該情況為f(n,m-1或n-1)+1。

———————————有待進步,奧力給!——————————

#include

using

namespace std;

intsep

(int n,

int m)

intmain()

openjudge 簡單的整數劃分問題

100ms 記憶體限制 65536kb 描述 將正整數n 表示成一系列正整數之和,n n1 n2 nk,其中n1 n2 nk 1 k 1 正整數n 的這種表示稱為正整數n 的劃分。正整數n 的不同的劃分個數稱為正整數n 的劃分數。輸入標準的輸入包含若干組測試資料。每組測試資料是乙個整數n 0 n 5...

006 上位機開發及簡單通訊

常見的上位機定義為一台可以發出特定操控命令的計算機,通過操作預先設定好的命令,將命令傳遞給下位機,通過下位機來控制裝置完成各項操作。此定義著重於強調控制指令的傳送,實際上除了傳送控制命令,上位機還能提供許多額外的功能 a.視覺化功能 上位機位於mcu與使用者之間,在mcu軟體開發過程中,通常直接處理...

遞迴 OpenJudge 7215 簡單整數劃分

簡單的整數劃分問題 總時間限制 100ms 記憶體限制 65536kb 描述 將正整數n 表示成一系列正整數之和,n n1 n2 nk,其中n1 n2 nk 1 k 1 正整數n 的這種表示稱為正整數n 的劃分。正整數n 的不同的劃分個數稱為正整數n 的劃分數。輸入標準的輸入包含若干組測試資料。每組...