15 2010 年中興面試題

2021-06-28 02:57:28 字數 472 閱讀 4956

題目:程式設計求解:

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

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

分析:一開始的時候我沒看清楚是從數列1,2,3,...n中取數,所以就想用揹包去求解此題,但是如果用揹包的話就要記錄路徑,有點麻煩,後來看清楚題意之後就發現比較水了,直接搜尋求解即可,分兩種情況:(1)取出當前的n遞迴求解f(n-1, m-n)函式;(2)不取出當前n遞迴求解f(n-1, m)函式即可。

**實現:

void dfs(int n, int m, stackres)

cout << endl;

return ;

} if(n > m) n = m;

dfs(n-1, m, res);

res.push(n);

dfs(n-1, m-n, res);

}

21 2023年中興面試題

程式設計求解 輸入兩個整數 n 和 m,從數列1,2,3.n 中 隨意取幾個數,使其和等於 m 要求將其中所有的可能組合列出來.分析 遞迴法 思路 1.首先判斷,如果n m,則n中大於m的數不可能參與組合,此時置n m 2.n m,n本身符合條件,輸出 3.n 給出 include int resu...

2023年中興面試題

輸入兩個整數n和m,從數列1 2 3 n中隨意取幾個數,使其和等於m,要求將其中所有的可能組合列出來。answer 第一眼反應就是dfs,其中需要考慮的問題是去除重複的組合,其他沒什麼難度,簡單的dfs include include include include include include ...

2023年中興面試題 01揹包問題演算法

題目 程式設計求解 輸入兩個整數 n 和 m,從數列1,2,3.n 中 隨意取幾個數,使其和等於 m 要求將其中所有的可能組合列出來。程式 include include using namespace std void qiujie int sum,int n else int main int ...