题目描述
双十一众多商品进行打折销售,小明想购买一些自己心仪的商品,但由于受购买资金限制,所以他决定从众多心意商品中购买3件,而且想尽可能的花完资金,现在请你设计一个程序帮助小明计算尽可能花费的最大资金额。
输入描述
第一行为整型数组M,数组长度小于100,数组元素记录单个商品的价格;
单个商品价格小于1000;
第二行输入为购买资金的额度R;
R < 100000。
输出描述
输出为满足上述条件的最大花费额度
如果不存在满足上述条件的商品请返回-1
示例
示例1
输入
23,26,36,27
78
输出
76
示例2
输入
23,26,36,27
26
输出
-1
解题思路
C++代码实现
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> arr;
int value;
char c;
while ((cin>>value).get(c)) {
arr.emplace_back(value);
if (c == '\n')
break;
}
int total;
cin >> total;
int i, j, k, res = 0;
for (i = 0; i < arr.size() - 2; ++i) {
for (j = 1; j < arr.size() - 1; ++j) {
for (k = 2; k < arr.size(); ++k) {
int temp = arr[i] + arr[j] + arr[k];
if (temp > total)
continue;
else {
res = max(res, temp);
}
}
}
}
if (res == 0)
cout << "-1" << endl;
else
cout << res << endl;
return 0;
}
该程序设计问题旨在帮助用户在有限的资金内,选择三个商品以达到最高总价值。通过遍历所有商品组合,计算三件商品的总价,并与用户预算比较,找到最大可能的花费额度。当无法找到满足条件的商品组合时,返回-1。
1792

被折叠的 条评论
为什么被折叠?



