github july 尋找和為定值的多個數

2021-07-05 05:53:02 字數 463 閱讀 2030

輸入兩個整數n和sum,從數列1,2,3.......n 中隨意取幾個數,使其和等於sum,要求將其中所有的可能組合列出來。

解法:類揹包問題(遞迴問題)

可以看出這是關於0-1揹包問題,可以將問題定義為f(n,m),從1->n中選擇多個數,使得之和為m

那麼(1)選取n,則剩下從n-1個數中選擇和為m-n的數,即求f(n-1,m-n)

( 2)不選取n,則從剩下的n-1個數中選擇和為m的數,即求f(n-1, m)

listnums;

void func(int n, int m)

{ if(n<=0 || m<=0)

return;

if(n == m)

{ for(list::iterator iter = nums.begin();iter!=nums.end();iter++)

cout<<*iter<<"+";

cout<

尋找和為定值的數

尋找和為定值的兩個數 include using namespace std include 排序夾逼 時間複雜度為o nlogn n o nlogn 空間複雜度 o 1 void twosum int a,unsigned int length,int sum else void funtest ...

尋找和為定值的多個數

程式設計求解 輸入兩個整數 n 和 m,從數列1,2,3.n 中 隨意取幾個數,使其和等於 m 要求將其中所有的可能組合列出來。include includeusing namespace std 全域性變數 listlist1 從1,2.n找到和為sum的數字 void find factor i...

尋找和為定值的多個數

輸入兩個整數n和sum,從數列1,2,3 n 中隨意取幾個數,使其和等於sum,要求將其中所有的可能組合列出來。注意到取n,和不取n個區別即可,考慮是否取第n個數的策略,可以轉化為乙個只和前n 1個數相關的問題。如果取第n個數,那麼問題就轉化為 取前n 1個數使得它們的和為sum n 對應的 語句就...