08购物问题

该程序设计问题旨在帮助用户在双11购物节中,根据有限的资金购买三件商品,以尽可能地消耗全部资金。输入包括商品价格列表和购买预算,输出为能购买的三件商品总价的最大值。程序通过三重循环遍历所有商品组合,检查是否满足条件并更新最大花费。示例展示了不同情况下的输出结果,例如在某些情况下可能无法找到满足条件的商品组合,此时返回-1。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

备注:输入格式正确
————————————————
 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAX_NUM 100
 
void GetMaxCount(int *list, int len, int n)
{
    int i, j, k;
    int arr[1024] = {0};
    int pos = 0, sum, max = -1;
 
    for (i = 0; i < len; i++) {
        for (j = 0; j < len; j++) {
            for (k = 0; k < len; k++) {
                sum = list[i] + list[j] + list[k];
                if (((i != j) && (j != k) && (i != k)) && (sum <= n)) {
                    if (max < sum) {
                        //printf("%d+%d+%d\n", list[i], list[j], list[k]);
                        max = sum;
                    }
                }
            }
        }
    }
    printf("max:%d\n", max);
}
 
int main()
{
    int list[MAX_NUM] = {0};
    int pos = 0;
    int n;
    char str[1024] = {0};
 
    gets(str);
    scanf("%d", &n);
    char *p = strtok(str, ",");
    while (p != NULL) {
        list[pos] = atoi(p);
        pos++;
        p = strtok(NULL, ",");
    }
    GetMaxCount(list, pos, n);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值