整數劃分的遞迴實現演算法,並輸出所有劃分

2021-08-17 18:45:11 字數 602 閱讀 7663

//整數劃分的遞迴實現演算法,可進一步考慮輸出所有劃分

#include

using namespace std;

int integerdivision(int n, int m);//得到劃分數

void print(int sum, int k, int prio);//輸出所有劃分

int a;//將這兩個資料設為全域性變數

int mark[200];

int main()

//整數劃分的遞迴演算法

int integerdivision(int n, int m)

if (nreturn integerdivision(n, n);

if (n == m)

return integerdivision(n, m - 1) + integerdivision(n - m, m);

}//輸出劃分的所有情況

void print(int sum, int k, int prio)

else

}執行截圖如下:

整數劃分的遞迴演算法

關於整數劃分有對應的動態規劃演算法,我這裡介紹一下遞迴的演算法,效率沒有動規高。這裡體現的是一種遞迴的思想 整數劃分問題就是將乙個整數劃分為多個數之和 也就是將正整數n表示成一系列正整數之和 n n1 n2 n3 n k 其中n1 n2 n3 n k k 1 例如正整數6有如下11種劃分 6 5 1...

整數劃分問題(遞迴演算法)

問題描述 將正整數n表示成一系列正整數之和,求有多少中劃分方法。例如正整數6有以下劃分方法 最大加數為6時,有1種劃分 6 最大加數為5時,有1種劃分 5 1 最大加數為4時,有2種劃分 4 2,4 1 1 最大加數為3時,有3種劃分 3 3,3 2 1,3 1 1 1 最大加數為2時,有3種劃分 ...

python整數劃分,遞迴演算法

正整數n,n m1 m2 mk,其中mi為正整數,並且1 mi n,集合是整數n的乙個劃分。輸入乙個不小於10的整數,輸出其所有整數劃分。將整數n劃分,假設某種劃分中m為最大的整數,則 n可分為n m,m,n m 再由 m 1 劃分 n m 可分為 n m m 1 m 1 n m m 1 再由 m ...