凑单后续,女朋友说商品购买不限数量……

简介: 凑单后续,女朋友说商品购买不限数量……

凑单后续,女朋友说商品购买不限数量……

假设这次的优惠是满100-30,我们要凑够100块钱的商品,女朋友收藏夹的商品有四个,标价分别是 10,50,45,100。那么共有几种凑单方案呢?

这么简单的问题,我们先来用手算一下:

100 = 100
100 = 50+50
100 = 50+10+10+10+10+10
100 = 45+45+10
100 = 10+10+10+10+10+10+10+10+10+10

这总共有 5 种凑单方法,正好可以凑够100块钱。

emmmm……那么今天的凑单文章到此结束……


这可不行,后天女朋友准备凑单一千,那可咋整啊?

我们来科学的分析一下这个问题,面对这样的问题,该从哪里下手呢?


从上次的凑单的问题,我们可以看到一个物品有两个状态,加入购物车和不加入购物车。但是这一次,多了一条:不限数量,那么还能套用上次的解法吗?


在套娃之前,我们可以使用暴力解法,遍历所有的可能性,把所有的可能都列举出来,但是暴力面对这种不限数量的操作,怕是有点难搞哦。

现在我们来把这个问题转化一下,转化成选不选当前商品的操作,先用一些变量表示一下这些需要用的东西。

优惠券的最低限制金额记为 amount

收藏夹的商品记作goods[i]i表示第几个商品,goods[i]中存放的值表示商品的价格。

假如我们把第 i 件商品加入购物车,然后购物车的金额变成了total,那么购物车的金额满足total的方案数量就变成了原来总金额已经到达total的数量和那些加上第 i 件商品的价值以后达到的total的方案数量之和。

转化成状态方程式就是

total金额方案数 = 历史total金额方案数 + (total-goods[i])金额方案数

状态转移方程可以列出来的话,那么就很容易做计算了,最后的优惠券金额方案数就是我们需要的值,我们只要往前递推就可以了。

我们不需要关注(total-goods[i])金额的方案组合是什么样子,是否包含当前商品。

这里有一点,购物车金额的变化中,大金额方案的数量计算依赖于小金额方案的数量,所以购物车的金额要从小往大计算。

这里有一点需要注意,我们这里只考虑了商品的价格,没有考虑相同价格的不同商品,所以goods[]中没有重复值出现,这一点也很重要



状态转移方程再怎么转移都需要有一个起始点,所以我们要找到临界点,那么这个临界点是什么呢?

让时间回到最起始点,当你的女朋友刚打开购物APP时,购物车的总金额最低为0,这时候有几种方案呢?

只有一种,那就是什么商品都没选,这个也就是临界点。

大部分操作都已经明确了,我们把这整个过程转化成代码

参考代码

public int shop(int amount, int[] goods) {
    int len = goods.length;
    // 状态记录数组,记录不同购物车金额下的组合数量
    int[] status = new int[amount + 1];
    // 购物车金额为0时的方案数量
    status[0] = 1;
    for (int j = 0; j < len; j++) {
        int money = goods[j];
        if (money > amount) {
            continue;
        }
        for (int k = money; k <= amount; k++) {
            // 方案数量的状态转移方程
            status[k] = status[k] + status[k - money];
        }
    }
    return status[amount];
}


同学们,你以为这样就可以优雅结束了吗?

不,这才是个开始。


留下两个小问题,思考一下:

  1. 如果存在相同价格的不同的商品,那么该怎么计算方案数量?
  2. 如果女朋友在计算过程中增删收藏夹的商品,那么这又该怎么计算方案数量呢?
目录
相关文章
|
6月前
|
存储 安全 前端开发
阿里云服务器计算型实例规格特点、适用场景、收费标准和活动价格参考
阿里云服务器计算型实例规格有哪些?收费标准有多大区别?阿里云服务器计算型实例规格有X86计算和ARM计算两种架构,每种架构都包含了不同类型的计算型实例,所以相同cpu和内存配置的计算型实例云服务器,收费价格标准也大不相同,下面小编为大家汇总一下哪些实例属于计算型实例规格,它们的最新收费价格标准又是怎样的,以供参考选择。
阿里云服务器计算型实例规格特点、适用场景、收费标准和活动价格参考
|
1月前
|
存储 弹性计算 固态存储
阿里云服务器收费标准、价格计算器使用及最新活动价格参考
阿里云服务器收费标准参考,目前阿里云服务器最低配置为2核0.5G,收费标准为8.5/月,有的用户在购买阿里云服务器前,需要了解一下阿里云服务器的价格,可以使用价格计算器来快速查询云服务器的实例规格、带宽、云盘价格。另外,随着2024金秋云创季活动的开启,云服务器的最新活动价格情况也是很多用户比较关心的,本文也为大家整理汇总了云服务器的收费标准、价格计算器使用教程及云服务器的金秋云创季价格情况,以供参考和选择。
|
7月前
|
存储 固态存储 安全
阿里云4核CPU云服务器价格参考,最新收费标准和活动价格
阿里云4核CPU云服务器多少钱?阿里云服务器核数是指虚拟出来的CPU处理器的核心数量,准确来讲应该是vCPU。CPU核心数的大小代表了云服务器的运算能力,CPU越高,云服务器的性能越好。阿里云服务器1核CPU就是一个超线程,2核CPU2个超线程,4核CPU4个超线程,这样云服务器可以同时处理多个任务,计算性能更强。如果网站流程较小,少量图片展示的企业网站,建议选择2核及以上CPU;如果网站流量较大,动态页面比较多,有视频等,建议选择4核、8核以上CPU。
阿里云4核CPU云服务器价格参考,最新收费标准和活动价格
|
6月前
|
存储 固态存储 异构计算
阿里云服务器租用一个月教程、收费标准与活动价格参考
阿里云服务器可以月租也可以年租,阿里云的活动中云服务器时长大多都是1年或3年,比较符合大多数用户的需求,但是也有少部分用户只想购买1个月或者3个月、6个月阿里云服务器来体验,但是又不知道选择月付的具体租用流程及月付的收费标准情况,本文为大家介绍一下租用时选择月付的具体流程以及月付的收费标准情况,以供参考。
阿里云服务器租用一个月教程、收费标准与活动价格参考
|
7月前
|
存储 弹性计算 安全
对象存储OSS产品常见问题之购买的资源包和预留空间区别只购买了预留空间会自动抵扣如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
1150 4
|
7月前
|
存储 弹性计算 人工智能
阿里云99计划2核2G服务器99元/年,新购续费均可用
阿里云服务器99元一年配置为云服务器ECS经济型e实例,2核2G配置、3M固定带宽和40G ESSD Entry系统盘,新用户和老用户均可买
|
7月前
|
弹性计算 数据库 云计算
阿里云又降价了!2024年3月阿里云核心产品价格全线下调详情
阿里云又降价了!2024年3月阿里云核心产品价格全线下调详情。2024年3月,阿里云宣布了其历史上最大力度的一次降价,其核心产品价格全线下调,平均降幅达到了20%,最高降幅更是高达55%。这次降价从2024年3月1日开始实施,涵盖了100多款产品和500多个产品规格,覆盖了计算、存储、数据库等所有核心产品,如云服务器ECS、对象存储OSS和云数据库RDS等。
293 2
|
7月前
|
弹性计算 固态存储 大数据
阿里云服务器一年价格多少,2024年阿里云最新价格明细整理汇总
阿里云服务器分为云服务器ECS和轻量应用服务器,云服务器s6公网带宽可选1M到5M,系统盘40G起可选高效云盘、SSD云盘或ESSD云盘,阿里云服务器租用费用,轻量应用服务器和云服务器ECS优惠价格表,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,幻兽帕鲁4核16G和8核32G服务器配置,云服务器ECS可以选择经济型e实例、通用算力u1实例、ECS计算型c7。
122 1
|
7月前
|
弹性计算
阿里云服务器最新价格参考,100元-5000元预算可购买的云服务器配置及价格汇总
2024购买阿里云服务器多少钱?由于个人和企业用户的上云场景和预算不同,不同预算可购买的阿里云服务器实例规格和配置不同,一般来说个人用户购买云服务器的预算都在100元-500元以内,普通企业用户预算大多在1000-3000元之间,大型企业因为对云服务器性能要求更高,一般会将预算提高到3000元-5000元以上,那么这些预算能买到一个什么配置的阿里云服务器呢?下面是截止目前不同预算情况下,可购买的阿里云服务器配置和活动价格及券后价格整理,以供大家参考选择。
阿里云服务器最新价格参考,100元-5000元预算可购买的云服务器配置及价格汇总
|
存储 弹性计算 安全
阿里云2核4G配置服务器可选实例及收费价格参考
阿里云2核4G配置服务器的价格取决于所选云服务器的实例规格和带宽及系统盘大小,阿里云服务器2核4G配置有将近二十种实例规格可选,目前阿里云活动中2核4G配置有轻量应用服务器、经济型e、通用算力型u1、计算型c7和第八代计算型c8a与c8i实例可选,轻量应用服务器2核4G1M目前只要165元1年,云服务器ECS经济型e实例2核4G配置3M带宽40GB ESSD Entry云盘优惠价格57.94元3个月,云服务器ECS计算型c7实例2核4G配置3M带宽40GB ESSD云盘优惠价格290.55元6个月、611.10元1年。至于选择哪个实例规格,还需要根据自己的需求、预算及上云场景来综合判断。
442 0
阿里云2核4G配置服务器可选实例及收费价格参考