列舉技巧 (Enumerate)
列舉(Enumerate),又稱為暴力搜尋,是演算法中最直觀但也最實用的技巧之一。當問題規模較小時,透過窮舉所有可能的情況來找到答案往往是最快且最不易出錯的方法。本章節將帶你掌握幾種常見的枚舉模式。
1. 基本枚舉#
介紹如何使用多層迴圈來枚舉區間或特定範圍的數值,這是所有枚舉技巧的基礎,適合解決規模較小的組合問題。
2. 位元枚舉#
利用二進位的特性來枚舉集合的所有「子集」,常解決「選或不選」類型的問題,是 APCS 與競賽中非常重要的技巧。
3. 排列枚舉#
介紹如何使用 C++ STL 的 next_permutation 函式來生成所有可能的排列順序,解決與順序有關的窮舉問題。
4. 題解:人力分配#
練習使用迴圈枚舉兩個工廠的人力配置,計算二次函數下的最大收益。
5. 題解:Apple Division#
經典的位元枚舉練習題,利用二進位遮罩將物品分成兩堆,使兩堆重量差最小。
6. 題解:位元枚舉題解#
更多關於位元枚舉的應用練習與程式碼解析,強化對位元運算的理解。