【算法】枚举法
- 描述:枚举法是对所有候选解一一列举,并检查每一个解是否符合要求,由于枚举法要对所有候选解进行检查,故枚举法时间性能较差,并只适用于候选解数量有限、可枚举的场合;
- 举例:用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; }
转载请注明出处及链接 谢谢