整數劃分問題

2021-10-23 00:11:30 字數 685 閱讀 1101

整合dalao們的方法後的自己理解。

寫的超級好,很明白

乙個正整數可以劃分為多個正整數的和,比如n=3時:3;1+2;1+1+1;

共有三種劃分方法。現給出乙個正整數,問有多少種劃分方法。n< =100

例如:(方便檢測)

輸入 :3 輸出:3

輸入: 5 輸出:7

輸入:10 輸出:42

看了網上的方法,大多都是用下面這個遞迴,主要是要看懂。

n : 要 被劃分 的數

m : n 被 小於/等於 m 的數 劃分

n=1 : 只能是 1 這乙個劃分了

m=1 : n 只能被 1 劃分,也就是 n個1了

nn==m : n被小於等於自己的數劃分 (1)+(2)

(1)n被等於自己的數劃分 :那就乙個數 n

(2)n被小於自己的數劃分:(n,n-1),就相當於 n被小於等於 n-1 的數劃分

n>m : 和 n==m 思路差不多 ;例如(6,4)

(1)n被等於m的數(即m)劃分:(n-m,m) ;(2,4):看看n被乙個m劃分後,還能不能再被小於等於m的數劃分。

(2)n被小於m的數劃分:(n,m-1);(6,3)

int

equation

(int n,

int m)

整數劃分問題

整數劃分問題是乙個經典問題,幾乎在講演算法設計的書中都會講,下面把主要的思想給總結下。所謂整數劃分,就是將乙個正整數n劃分為一系列的正整數之和,如將n可以劃分為 1 我們該如何找出所有的劃分呢?我們可以先來看看整數劃分的規律 譬如正整數 6 劃分情況如下 6 5 14 2 4 1 1 3 3 3 2...

整數劃分問題

給定乙個自然數,分成k部分,a1,a2.的數的和,要求a1 a2.求有多少種?原理 整數n拆分成最多不超過m個數的和的拆分數,和n 拆分成最大不超過m的拆分數相等。根據這個原理,原問題就轉化成了求最大拆分為k的拆分個數與最大拆分為k 1的拆分個數的差 f n,k f n,k 1 f n k,k 如下...

整數劃分問題

首先是遞迴解法 整數劃分問題是將乙個正整數n拆成一組數連加並等於n的形式,且這組數中的最大加數不大於n。如6的整數劃分為 65 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 共11種。下面介紹一種通過遞迴方法得到乙...