鱼C论坛

 找回密码
 立即注册
查看: 1894|回复: 7

商品购买问题

[复制链接]
发表于 2021-10-30 14:25:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

    双11众多商品进行打折销售,小明想购买一些自己心意的商品
    但由于受购买资金限制,所以他决定从众多心意商品中购买3件
    而且想尽可能的花完资金
    现在请你设计一个程序帮助小明计算尽可能花费的最大资金额

    输入描述
     第一行为整型数组M 数组长度小于100 数组元素记录单个商品的价格
     单个商品价格<1000
     第二行输入为购买资金的额度R
     R<100000

    输出描述
     输出为满足上述条件的最大花费额度
     如果不存在满足上述条件的商品请返回-1

    例子1
    输入
     23,26,36,27
     78
    输出
     76

    例子2
        输入
         23,30,40
         26
        输出
          -1

    备注:输入格式正确
     */
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-30 14:30:14 | 显示全部楼层

回帖奖励 +6 鱼币

好像不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-30 14:59:11 | 显示全部楼层

回帖奖励 +6 鱼币

本帖最后由 傻眼貓咪 于 2021-10-30 15:32 编辑

C代码:
#include <stdio.h>

int main()
{
    int price[100], money = 0, temp, max = -1;
    for(int i = 0;; i++){
        if(scanf("%d", &temp)){
            char a = getchar();
            price[i] = temp;
            if(a != ',') break;
        }
    }
    scanf("%d", &money);
    for(int i = 0; price[i]; i++){
        for(int j = 0; price[j]; j++){
            for(int k = 0; price[k]; k++){
                if(i != j && j != k && k != i && price[i] + price[j] + price[k] < money){
                    max = price[i] + price[j] + price[k] > max ? price[i] + price[j] + price[k] : max;
                }
            }
        }
    }
    
    printf("%d", max);

    return 0;
}
Python代码:
price = list(map(int, input().split(","))) + [0]
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[i] + price[j] + price[k] < money:
                max = price[i] + price[j] + price[k] if price[i] + price[j] + price[k] > max else max

print(max)
输入/输出:
23,26,36,27
78
76
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-10-30 14:59:49 From FishC Mobile | 显示全部楼层

回帖奖励 +6 鱼币

这个学习下先。谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-30 16:19:33 | 显示全部楼层

回帖奖励 +6 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-30 17:08:33 | 显示全部楼层

回帖奖励 +6 鱼币

本帖最后由 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-30 17:26:14 | 显示全部楼层

回帖奖励 +6 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-30 17:33:44 From FishC Mobile | 显示全部楼层
有个模块叫itertools正适合你现在用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-2 13:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表