## 🧮 組合列舉講義:從 1~n 中選 k 個數字 [這邊是題目](http://120.101.182.21/d/hd112/p/64) --- ### ✅ 題目目標 給你兩個數字 `n` 和 `k`,請列出從 1 到 n 中選出 k 個數字的**所有組合**,而且每個組合要依照編號從小到大排列,不能重複或顛倒順序。 --- ### 🔍 什麼是組合? - **組合(Combination)** 是從一堆東西裡面「選出幾個」,但不管順序。 - 例如:從 {1, 2, 3} 選兩個 - 合法的組合有:`1 2`, `1 3`, `2 3` - `2 1` 和 `3 1` 就不重複列出,因為跟前面重複。 --- ### 🎯 輸出條件 - 所有組合都要從小到大列出(例如 `1 3`,不要寫成 `3 1`) - 各組合之間的順序也要照「字典序」排列 - 每組答案用空格分隔 --- ### 💡 解題思路 1. **一層層選數字**: - 從 1 開始,依序往上選 - 每次選下一個數字時,只能從比前一個大的數開始選,避免重複 --- ### 🧪 範例 假設 n = 4,k = 2 1 到 4 有:1, 2, 3, 4,要選兩個 合法的組合是: ``` 1 2 1 3 1 4 2 3 2 4 3 4 ``` --- ### 📘 提示 - 每次加入一個數字後,可以把它放進一個暫時的變數或陣列裡 - 當選到第 k 個數字時,就把目前這組數字印出 - 選完一個要「退回一步」,再試下一個數,這就叫「回朔」 --- ### 🧭 練習建議 - 試著自己用紙寫出 n = 5, k = 3 時的所有組合 - 再用程式寫出來,比對看看有沒有寫對 --- 有任何組合題的變形都可以從這個邏輯出發:**從小到大依序選,不能重複**,掌握這一點就可以解很多類似的題目了!