weiyideid823 发表于 2021-10-30 14:25:51

商品购买问题

有如下需求,请教大神如何实现?

    双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 14:30:14

好像不会

傻眼貓咪 发表于 2021-10-30 14:59:11

本帖最后由 傻眼貓咪 于 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

女新手 发表于 2021-10-30 14:59:49

这个学习下先。谢谢

心驰神往 发表于 2021-10-30 16:19:33

Stubborn 发表于 2021-10-30 17:08:33

本帖最后由 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



58773622 发表于 2021-10-30 17:26:14

{:10_256:}

qq1151985918 发表于 2021-10-30 17:33:44

有个模块叫itertools正适合你现在用。
页: [1]
查看完整版本: 商品购买问题