|
发表于 2025-5-21 22:31:08
|
显示全部楼层
山西省长治市

根据楼主提供的例子
身上有145020.8元,商品1价格为57090.5元,商品2价格为16143.54元,商品3价格为15835.28元,商品4价格为9621.4元,商品5价格为8071.76元
怎么买才剩余最少的钱,可以重复买,
比如买商品2买8个,商品3买1个
16143.54X8=129148.32
145020.8-129148.32-15835.28=37.2
通过脚本计算得到
[color=rgba(0, 0, 0, 0.85)][backcolor=rgba(0, 0, 0, 0.04)]最优购买方案 -----商品5 × 1 = 8071.76商品4 × 1 = 9621.4商品3 × 6 = 95011.68商品2 × 2 = 32287.08----------------------总花费:144991.92剩余金额:28.88----------------------
[color=rgba(0, 0, 0, 0.85)][backcolor=rgba(0, 0, 0, 0.04)]
[color=rgba(0, 0, 0, 0.85)][backcolor=rgba(0, 0, 0, 0.04)]37.2并非为最优解
[color=rgba(0, 0, 0, 0.85)][backcolor=rgba(0, 0, 0, 0.04)]
[color=rgba(0, 0, 0, 0.85)][backcolor=rgba(0, 0, 0, 0.04)]
[color=rgba(0, 0, 0, 0.85)]脚本的核心逻辑是通过[color=var(--md-box-samantha-deep-text-color) !important]递归算法 + 穷举搜索[color=rgba(0, 0, 0, 0.85)]来尝试所有可能的商品购买组合,找到总花费最接近预算(剩余金额最少)的方案
核心思路:递归穷举所有组合
[color=rgba(0, 0, 0, 0.85)]对每个商品,从最大可能数量开始尝试(优先尝试高价组合,可能更快找到优解),通过递归逐层确定所有商品的数量,最终验证组合是否更优。
[color=rgba(0, 0, 0, 0.85)]每次找到更优的组合时(剩余金额更少),立即更新最佳余额[color=rgba(0, 0, 0, 0.85)]和最佳组合[color=rgba(0, 0, 0, 0.85)],并通过显示结果[color=rgba(0, 0, 0, 0.85)]函数实时展示在界面上
[color=rgba(0, 0, 0, 0.85)]这个脚本的核心是[color=var(--md-box-samantha-deep-text-color) !important]暴力穷举所有可能的组合[color=rgba(0, 0, 0, 0.85)],通过递归逐层确定每个商品的购买数量,并用贪心策略(从大到小尝试数量)和剪枝(限制数量)优化计算量。
[color=rgba(0, 0, 0, 0.85)]虽然逻辑简单直接,但存在效率和精度问题,适合小规模问题(如 5 种商品、数量限制 20),但面对更多商品或无数量限制时需进一步优化算法。
[color=rgba(0, 0, 0, 0.85)]
计算最优组合.e
(967.3 KB, 下载次数: 3)
|
评分
-
参与人数 1 | 荣誉 +1 |
收起
理由
|
笨潴
| + 1 |
热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻! |
查看全部评分
|