暴力枚举法举例1

QWQ的朋友QAQ开了一个A工厂,但QAQ不是一个很精明的老板,A工厂只生产三种产品,需要三种原材料,第一种产品分别消耗第一种原材料a1、第二种原材料b1、第三种原材料c1,第二种产品分别是a2、b2、c2,第三种产品分别是a3、b3、c3,但原材料总量是有限制的,分别是a、b、c,第一种产品可以盈利d1元,第二种产品可以盈利d2元,第三种原材料可以盈利d3元,由于每个产品都不可以分解,所以所有产品的生产量一定是整数。QAQ不知道怎么合理安排生产让他的盈利最大,于是他求助QWQ,QWQ更不知道了,但你一定知道

先输入一个数字t(t<20),代表数组的组数 每组数据包括五行 第一行三个数字a1、b1、c1 第二行三个数字a2、b2、c2 第三行三个数字a3、b3、c3 第四行三个数字a、b、c 第五行三个数字d1、d2、d3 保证所有输入都是非负整数,并且不大于200
 
输出最大盈利

测试用例
1 1 1 1 1 1 1 1 1 1 3 3 3 1 2 3
9
代码如下
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{int a[10],b[10],c[10],d[4],i,j,n,t,m,max,x,y,k;
    cin>>x;
    for(y=0;y<x;y++)
    {   max=0;
        for(i=1;i<=4;i++)
            cin>>a[i]>>b[i]>>c[i];
        cin>>d[1]>>d[2]>>d[3];
        for(i=0;i<=200;i++)
        { for(j=0;j<=200;j++)
            {for(k=0;k<=200;k++)
                {
                     if(i*a[1]+j*a[2]+k*a[3]<=a[4]&&i*b[1]+j*b[2]+k*b[3]<=b[4]&&i*c[1]+j*c[2]+k*c[3]<=c[4])
                     {    t=i*d[1]+j*d[2]+k*d[3];
                          if(t>max)
                              max=t;
                     }
                }
            }
        }
        cout<<max<<endl;
    }
    return 0;
}

#用i,j,k表示第一,二,三组多少个,然后每种情况挨个枚举,可以用于解方程这种情况,解得个数是有限的,然后限制条件就是原料。每个组数当做循环条件,原料当做限制条件,可以实现暴力枚举法

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值