題目:程式設計求解:
輸入兩個整數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 ...