华为笔试2021.8.18
总结:第一题,多重背包;第二题,01背包的组合问题;第三题,广度优先搜索。
使用语言C++
1. 取零食
小孩子可得到一些零食。现在有价格A,B,C,D,E…原商品各有A1,B1,C1,D1,E1…个,小朋友的喜爱度依次为A2,B2,C2,D2,E2…。请返回选取X元零食可达到的最大喜爱度。
输入
第一行输入为X和N,X为可使用钱的总额,N为零食总类。
第二行开始为零食属性,每行有三个整型数字,分别代表零食的价格、数量和喜爱度。
0<=X<=1000
0<N<=100
零食价格 (0,100)
零食个数 [0,10000]
零食喜爱度 [0,10000]
输出
最大喜爱度
示例
输入:
6 7
3 1 8
4 1 2
3 1 1
9 1 7
4 1 1
5 1 18
4 1 4
输出:
18
解释:6元可以选5元灵石1件,喜爱度总和为18.
代码
通过100%
#include <bits/stdc++.h>
using namespace std;
int main()
{
int target,n;
cin >> target >> n;
vector<int> prices(n);
vector<int> nums(n);
vector<int> love(n);
for(int i=0;i<n;i++){
cin >> prices