尋找和為定值的多個數

2021-07-02 04:12:27 字數 555 閱讀 7581

程式設計求解:

輸入兩個整數 n 和 m,從數列1,2,3.......n 中 隨意取幾個數,

使其和等於 m ,要求將其中所有的可能組合列出來。

#include#includeusing namespace std;  

//全域性變數

listlist1;

//從1,2....n找到和為sum的數字

void find_factor(int sum, int n)

//注意下面的語句

cout << n << endl;

list1.reverse();

} //放入n,n-1個數填滿sum-n

list1.push_front(n);

find_factor(sum-n, n-1);

//不放入n,n-1個數填滿sum_n

list1.pop_front();

find_factor(sum, n-1);

}

int main()

尋找和為定值的多個數

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

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

輸入兩個整數n和sum,從數列1,2,3.n 中隨意取幾個數,使其和等於sum,要求將其中所有的可能組合列出來。解法 類揹包問題 遞迴問題 可以看出這是關於0 1揹包問題,可以將問題定義為f n,m 從1 n中選擇多個數,使得之和為m 那麼 1 選取n,則剩下從n 1個數中選擇和為m n的數,即求f...

演算法 尋找和為定值的多個數

2010 年中興面試題 程式設計求解 輸入兩個整數n 和m,從數列1,2,3.n 中隨意取幾個數,使其和等於m 要求將其中所有的可能組合列出來。邏輯分析 2 問題其實本質上就是0 1揹包問題,對於每乙個n,我們採用貪婪策略,先考察是否取n,如果取n,那麼子問題就變成了find n 1,m n 而如果...