枚舉法(Brute Force):是一種直接遍歷所有可能情況的算法思想,適合解決數據范圍較小的問題。它的核心是窮舉所有可能性,并檢查哪些情況符合要求。
枚舉法的基本思想:計算機主要功能,或者說它的優勢就是算力強大,窮舉所有可能看著有些笨拙,但是對于計算機來說不是什么問題,因此我們要善于利用這種思想進行程序設計。
枚舉法的應用場景
問題沒有明顯的數學規律,只能暴力嘗試。
需要找到所有可能的解(如排列組合)。
枚舉法的思維步驟:
確定枚舉范圍(不重復、不遺漏)。
逐個檢查 每個可能的解。
篩選出符合條件的解。
C++ 枚舉法代碼示例
求解 a + b = 100 的所有正整數解
#include
using namespace std;
int main() {
cout << “a + b = 100 的所有正整數解:” << endl;
for (int a = 1; a < 100; a++) {
int b = 100 - a;
cout << a << " + " << b << " = 100" << endl;
}
return 0;
}
輸出:
1 + 99 = 100
2 + 98 = 100
…
99 + 1 = 100
枚舉法的優缺點
優點:
思路簡單,容易實現,適用于小規模問題。
對于小規模問題,效率可以接受。
能夠找到所有可能的解。
缺點:
當數據量大時,可能會做很多無用功。
時間復雜度高,效率低,不適合大規模問題。