传送门->https://ac.nowcoder.com/acm/problem/13882
题意翻译
题目描述
今天,HH 成为一名购物者,他想买很多东西。 HH有一个包最多可以装w公斤的东西,他有d美元。 现在他想买 n 件物品,第 i件物品重量 w i公斤,花费 c i美元。 H他不擅长数学,所以他让你告诉他是否可以买所有东西并随身携带。
输入输出
第一行包含一个正整数T(1≤T≤10),表示有T个测试用例。 对于每个测试用例: 第一行包含三个正整数n,w,d(1≤n≤100,1≤w≤100,1≤d≤100)——HH想要购买的物品数量,他的包可以携带的最大重量,和他有的钱。 第二行包含 n 个整数 w 1 ,w 2 …w n (1≤w i ≤100)。第三行包含 n 个整数 c 1 ,c 2 …c n (1≤c i ≤100)。
对于每个测试用例,如果 HH 可以购买所有物品并将它们放在他的包中,则输出一行“YES”(不带引号),否则输出“NO”(不带引号)。
样例
2
4 12 17
1 2 4 5
5 4 6 2
4 11 17
1 2 4 5
5 4 6 2
YES
NO
说明
在第一个例子中,所有物品总共花费 17 美元,总共重 12 公斤,HH 有足够的钱,他的包可以装 12 公斤的东西。
最简单的做法是
把物品的重量和价格分别求和,在和背包的重量和手里的money作比较。
上代码
#include<iostream>
using namespace std;
//主程序
int main()
{
int T,n,w,d;
int ww[105],c[105];//ww是重量数组,c是价格数组
cin>>T;
while(T--){
int sumw=0,sumc=0;//一定要赋值为0!!!
cin>>n>>w>>d;
for(int i=1;i<=n;i++){
cin>>ww[i];
sumw+=ww[i];
}
for(int i=1;i<=n;i++){
cin>>c[i];
sumc+=c[i];
}
/*
if物品的总重量和总价格都小于HH背包的耐久和手中的money,输出YES
else 输出NO
*/
if(sumw<=w&&sumc<=d)
cout<<"YES";
else
cout<<"NO";
puts("");//等于 cout<<endl;
}
return 0;
}