阿里测评,怎么做呢?

小明是一个爱吃零食的小伙子,平时会在网上购买各种好吃的零食。一天,小明了解到,在天猫超市上购买不同种类的零食,会有各种各样的优惠活动,如:满99减50,满188减100,满288减150等等,每种零食只参与其中一种优惠活动方式,还包邮哦,但也有条件,就是每种零食只限购一份。小明看了非常心动,原来天猫超市上购买零食会这么划算,可以节省很多钱,真的太好了。心动不如行动,小明马上列出了所有参与活动的零食种类和其价格,以及每种零食种类参与的优惠活动方式,小明也看了看自己支付宝里面的余额为M(正整数)元,用于天猫超市上的购物支付。但是小明烦恼也来了,左算右算,也算不出怎样选择零食的组合才能使自己买到的零食总和价值最大,聪明的你帮帮小明算算,在最后支付时(优惠后)的总金额不大于M的前提下,小明最多可以买到零食的价值总和N。
输入数据包括:
(1)优惠活动:满减金额条件和其满减金额(小于或等于5种优惠活动);
(2)每种零食的价格和其参加的优惠活动(小于30种零食);
(3)小明支付宝余额M
输出:小明最多可以买到零食的价值总和N


模板程序:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Main {

/** 请完成下面这个函数,实现题目要求的功能 **/
 /** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^  **/
    static int Goods_Compute(String activityStr, String itemStr, String amountStr) {


    }

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int res;
            
        String _activityStr;
        try {
            _activityStr = in.nextLine();
        } catch (Exception e) {
            _activityStr = null;
        }
        
        String _itemStr;
        try {
            _itemStr = in.nextLine();
        } catch (Exception e) {
            _itemStr = null;
        }
        
        String _amountStr;
        try {
            _amountStr = in.nextLine();
        } catch (Exception e) {
            _amountStr = null;
        }
  
        res = Goods_Compute(_activityStr, _itemStr, _amountStr);
        System.out.println(String.valueOf(res));    

    }
}

#阿里巴巴#
全部评论
又是小明,要深恶痛绝了
点赞 回复
分享
发布于 2017-08-13 13:17
有谁记录了这道题的测试用例吗
点赞 回复
分享
发布于 2017-08-19 09:33
小红书
校招火热招聘中
官网直投
这道题 哪位同学给个思路。
点赞 回复
分享
发布于 2017-08-21 20:52
sale[i]表示第i种折扣需要凑够的最少的钱,a[i,j]表示某商品的数量,b[i,j]表示某商品的价格属于第i种商品的价格 针对每种折扣都满足下列约束条件: min(a[i,1]*b[i,1]+b[i,2]*b[i,2]+...a[i,k]*b[i,k])>sale[i] 要求一个a[]的组合使得满足折扣sale[i]条件下花的最小的钱cost[i] (怎么解决?多重循环时间复杂度太高,难不成用同余定理?) 得到剩余的钱=累加cost[i]-累加slae[i]的折扣 最后用剩余的钱尽量多的买东西(这个简单) 大家看看有什么解法比较好,我被卡在下划线的那步,不知道用什么方法好
点赞 回复
分享
发布于 2017-08-21 21:06

相关推荐

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