商品购买问题
有如下需求,请教大神如何实现?双11众多商品进行打折销售,小明想购买一些自己心意的商品
但由于受购买资金限制,所以他决定从众多心意商品中购买3件
而且想尽可能的花完资金
现在请你设计一个程序帮助小明计算尽可能花费的最大资金额
输入描述
第一行为整型数组M 数组长度小于100 数组元素记录单个商品的价格
单个商品价格<1000
第二行输入为购买资金的额度R
R<100000
输出描述
输出为满足上述条件的最大花费额度
如果不存在满足上述条件的商品请返回-1
例子1
输入
23,26,36,27
78
输出
76
例子2
输入
23,30,40
26
输出
-1
备注:输入格式正确
*/
好像不会 本帖最后由 傻眼貓咪 于 2021-10-30 15:32 编辑
C代码:#include <stdio.h>
int main()
{
int price, money = 0, temp, max = -1;
for(int i = 0;; i++){
if(scanf("%d", &temp)){
char a = getchar();
price = temp;
if(a != ',') break;
}
}
scanf("%d", &money);
for(int i = 0; price; i++){
for(int j = 0; price; j++){
for(int k = 0; price; k++){
if(i != j && j != k && k != i && price + price + price < money){
max = price + price + price > max ? price + price + price : max;
}
}
}
}
printf("%d", max);
return 0;
}Python代码:price = list(map(int, input().split(","))) +
money = int(input())
max = -1
for i in range(len(price)):
for j in range(len(price)):
for k in range(len(price)):
if i != j != k != i and price + price + price < money:
max = price + price + price if price + price + price > max else max
print(max)输入/输出:23,26,36,27
78
76 这个学习下先。谢谢 顶 本帖最后由 Stubborn 于 2021-10-30 17:44 编辑
使用暴力解决,如题示,一定要三个商品,使用排列从M选3个数字组合
def max_pice(M, R, m=-1):
for each in list(itertools.combinations(M, 3)):
if sum(each) < R:
m = max(m, sum(each))
return m
{:10_256:} 有个模块叫itertools正适合你现在用。
页:
[1]