- 描述:枚舉法是對所有候選解一一列舉,並檢查每一個解是否符合要求,由於枚舉法要對所有候選解進行檢查,故枚舉法時間性能較差,並只適用於候選解數量有限、可枚舉的場合;
- 舉例:用50元錢買了三種水果:西瓜、蘋果和桔子。各種水果加起來一共100個。假如,西瓜5元一個,蘋果1元一個,桔子1元3個,設計一算法輸出每種水果各買了幾個。此時即可用枚舉法:設西瓜購買了x個,蘋果y個,桔子z個;則x、y、z滿足一下約束條件:x+y+z=100; 5x+y+z/3=50;
- 代碼:
#include<iostream> using namespace std; int main(){ int x=0,y=0,z=0; for(int i=0; i<10; i++) { for(int j=0; j<50-5*x; j++){//此處,用兩個for循環進行枚舉 z=3*(50-5*x-y); if(x+y+z==100){ cout<<x<<" "<<y<<" "<<z<<endl; } } } return 0; }