最大花费金额

标题:最大花费金额 | 时间限制:1秒 | 内存限制:32768K | 语言限制:不限
双十一众多商品进行打折销售,小明想购买自己心仪的一些物品,但由于受购买资金限制,所以他决定从众多心仪商品中购买三件,而且想尽可能的花完资金,现在请你设计一个程序帮助小明计算尽可能花费的最大资金数额。

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        List<Integer> totalNumList = Arrays.stream(in.nextLine().split(","))
                .map(Integer::parseInt)
                .sorted()
                .collect(Collectors.toList());
        int r = Integer.parseInt(in.nextLine());
        in.close();
        int maxMoney = -1;
        for (int i = 0; i < totalNumList.size(); i++) {
            for (int j = 0; j < totalNumList.size()-1; j++) {
                for (int k = 0; k < totalNumList.size(); k++) {
                    if(i != j && j != k && i != k){
                        int sum = totalNumList.get(i) + totalNumList.get(j) + totalNumList.get(k);
                        if (sum <= r && sum > maxMoney){
                            maxMoney = sum;
                        }
                    }
                }
            }
        }
        System.out.println(maxMoney);
    }
}
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const ll p = 998244353;

int a[110];
int main() {
    string s;
    cin >> s;
    int now = 0, op = 0;
    for(int i = 0; i < s.size(); i++) {
        if(s[i] == ',') {
            a[++op] = now;
            now = 0;
        } else now = now * 10 + s[i] - '0';
    }
    a[++op] = now;
    int n;
    cin >> n;
    int ans = -1;
    for(int i = 1; i <= op; i++) {
        for(int j = i + 1; j <= op; j++) {
            for(int k = j + 1; k <= op; k++) {
                if(a[i] + a[j] + a[k] <= n) ans = max(ans, a[i] + a[j] + a[k]);
            }
        }
    }
    cout << ans << endl;
}//manfen
#include<bits/stdc++.h>

using namespace std;

int Buy(vector<int>& nums, int target)
{
    int n = nums.size();
    if(n<3) return -1;
    sort(nums.begin(),nums.end());
    int left = 0, right = n-1, sum = 0;
    while(left+1<right)
    {
        while(left+1<right&&nums[left]+nums[left+1]+nums[right]>target)
            right--;
        for(int i=left+1;i<right;i++)
        {
            if(nums[i]+nums[left]+nums[right]<=target)
                sum = max(sum,nums[i]+nums[left]+nums[right]);
        }
        left++;
    }
    if(sum>0)
        return sum;
    else
        return -1;
}

int main(){
    string input;
    int target;
    getline(cin,input);
    cin>>target;
    
    vector<int> nums;
    int num = 0;
    for(int i=0;i<=input.size();i++)
    {
        if(input[i]==','||i==input.size())
        {
            nums.push_back(num);
            num = 0;
        }
        else num = num*10 + (input[i]-'0');
    }
    
    cout<<Buy(nums,target)<<endl;
    
    return 0;
}

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	input := bufio.NewScanner(os.Stdin)
	input.Scan()
	n:= strings.Split(input.Text(), ",")
	input.Scan()
	totals:=input.Text()
	items:=make([]int,0,0)
	for idx:=range n {
		price,_:=strconv.Atoi(n[idx])
		items = append(items,price)
	}
	dif := -1
	total, _ :=strconv.Atoi(totals)
	for i:=0;i<len(items);i++ {
		for j:=0;j<len(items);j++ {
			for k:=0;k<len(items);k++ {
				if i!=j && j!=k && i!= k{
					tmp := items[i] + items[j] + items[k]
					//fmt.Print(tmp," ")
					if  tmp > dif && tmp <= total {
						dif = tmp
					}
				}

			}
		}
	}
	fmt.Println(dif)
}




全部评论
感谢
点赞 回复 分享
发布于 2023-04-12 23:35 四川

相关推荐

点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务