【算法】枚举法

  • 描述:枚举法是对所有候选解一一列举,并检查每一个解是否符合要求,由于枚举法要对所有候选解进行检查,故枚举法时间性能较差,并只适用于候选解数量有限、可枚举的场合;
  • 举例:用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;
    }

     

posted @ 2019-12-22 21:33  dreamer123  阅读(1601)  评论(0编辑  收藏  举报