面試題之輸入n求和為m的所有組合

2021-07-22 19:45:59 字數 554 閱讀 7425

揹包問題。

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

分析:由該題可知是典型的揹包問題,根據該數是否加入進行遞迴運算。

解法:採用0-1揹包的思想,使用遞迴方法:

當選擇n時,就用剩下的n-1填滿 m-n;

當不選擇n是,就用剩下的n-1填滿m;

注意的是,當m=n時,即找到了符合條件的解。

#include#includeusing namespace std;

void print_num(int n, int m, vector& num)

cout << n;

cout << endl;

return;

} num.push_back(n);

print_num(n-1, m - n, num);

num.pop_back();

print_num(n-1,m,num);

}int main()

BAT經典演算法面試題系列 求和為n的連續正整數

說實話,對於演算法這個東西,真的得靠天賦的,不是像專案那樣,你多做多動手自然就會,雖然要靠天賦,但是對於基本的演算法以及基本的演算法面試題我們還是可以通過多積累多思考來培養自己的解題思路。本部落格就是通過講解bat演算法面試中的一些具備代表性的題來教大家如何去慢慢的積累演算法方面的解題思路。題目描述...

網易面試題 和為n的連續正數序列

用兩個數small和big分別表示序列的最小值和最大值。首先把small初始化為1,big初始化為2,如果從small到big的序列的和大於n的話,向右移動small,相當於從序列中去掉較小的數字。如果從small到big的序列和小於n的話,向右移動big,相當於向序列中新增big的下乙個數字,一直...

面試題 求狀態機產生對應長度為n的狀態序列的概率

對乙個有限態狀態機來說 對應有乙個開始狀態和乙個結束狀態 如 狀態機共有三個狀態 a b c end為結束狀態。其中a為初始狀態,狀態之間存在狀態轉移的概率。如p a b a 等。如果在狀態機上隨機遊走的話,就會有乙個狀態序列,如 aabcba等.問,狀態序列為n時候的概率是多少?此題做的方法有兩種...