求正整數n所有可能的和式的組合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2)
首先說一下,群裡面很多人在問這個東東怎麼去列印,當然如果是只求組合個數的話,他就是乙個完全揹包的問題,如果要列印的話,那還真的費一番功夫。
我們可以將這題想為乙個找零錢問題,以前找零錢問題是,我們有1元、2元、5元、10元面值的紙幣,現在我有20元錢,問有多少種找法。
這個找零錢如果將面值擴充套件為1元、2元、3元....20元,那麼就剛好是我們這道題了。
請看我另一篇blog《找零錢遞迴》
我直接貼**如下:
#include #include using namespace std;
#define max_value 10
int next[max_value] = ;
void segnum(int nsum, int* pdata, int ndepth)
int i = (ndepth == 0 ? next[0] : pdata[ndepth-1]);
for(; i <= nsum;) }
void showresult(int array,int nlen)
測試**如下:
int main()
//找零錢測試
showresult(array,max_value);
system("pause");
return 0;
}
測試結果如下:
求正整數n所有可能的和式的組合
題目 給定乙個數字n,求解出所有和為n的整數組合,要求組合按照遞增方式展示,而且唯一。分析 最初看到這個題,沒有什麼特別好的思路,後來看了下別人的帖子,其實問題也沒那麼難,採用遞迴的方式進行求解,比如我們需要計算和為4的所有組合,我們首先將小於等於4的所有數字列出來 1,2,3,4 首先選取第乙個數...
求正整數n所有可能的和式的組合
問題背景 求正整數n所有可能的和式的組合 如 4 1 1 1 1 1 1 2 1 3 2 1 1 2 2 對於這個題目有兩種理解了 一 如果將1 1 2和2 1 1當成不同的序列的話,這個問題會相對容易些。拿n 4這個例子,首先最長的組合肯定是4 1 1 1 1,那麼最短的組合是4 4,到最後可能會...
求正整數n所有可能的和式的組合
題目 給定乙個數字n,求解出所有和為n的整數組合,要求組合按照遞增方式展示,而且唯一。分析 最初看到這個題,沒有什麼特別好的思路,後來看了下別人的帖子,其實問題也沒那麼難,採用遞迴的方式進行求解,比如我們需要計算和為4的所有組合,我們首先將小於等於4的所有數字列出來 1,2,3,4 首先選取第乙個數...