Math 板


LINE

※ 引述《cornerstone (cornerstone)》之铭言: : 标题: [其他] 一题演算法的问题 : 时间: Tue Oct 15 23:14:54 2024 : : 板上朋友们好, : 想要请教各位一题演算法的问题, : 题目大概是是说: : 有厨师参加一个烹饪比赛,大会给了一个目标分数g, : 有1~n道菜,每一道菜有特定的分数p,和所需要花费的时间t : 每个厨师可以自己选择这道菜要煮还是不煮, : 请问厨师们要用怎麽样的策略才能在最短的时间内凑到目标分数? : 如果这些菜的分数无法刚刚好凑到目标分数,就回传-1 : : 我看到这题目时,第一个想法是像是动态规划的0/1背包问题 : (背包有重量限制,每个物品有各自的重量和价值, : 要在背包重量内塞进价值最高的物品) : : 所以目标分数就像是背包的重量, : 每一道菜可以选择做或不做, : 就很像要不要把某个物件装进背包中 : 但因为背包问题不需要考虑最少的物件, : 也不需要让重量凑到刚好背包的容量... : 所以好像无法直接套用这样的解题方式 : : 所以就改为或许可以用换铜板问题的思路去解, : 因为就是要用最少的铜板凑到需要找的钱 : 就像是题目中用最少的时间,凑到目标点数 : 但是因为换铜板的题目,各种币值是可以重复用, : 而这个问题是每一道菜只能选择煮或不煮 : 不能煮重复的菜 : : 想了一阵子,觉得好像有点方向,也觉得应该是动态规划, : 可是好像无法真正厘清到底开如何解.... : 不知道有没有人可以帮忙看看这题思路该怎麽想... : 或是有哪些类似题目可以参考? : 谢谢大家! 所以这问题看起来是给定下列数据: 正整数数列 times:代表每一道菜需要花的时间 正整数数列 points:代表每一道菜能得到的点数 正整数 g:需要的点数 "不能煮重复的菜" 看起来非常像是用 backtracking 的手法 (演算法分类上是 Depth First Search) 第一步先重新排序 times 和 points, 让 points 的内容由小到大 菜品总共 n 样,编号是从 0 ~ n-1. Java Code: // 宣告一个广域变数,用来储存满足分数所花费的最小时间 int result = Integer.MAX_VALUE int n = points.length // 这个函数会找寻在已经花了 currTime 的时间後, // 只做前面 0~ind 道菜且能达到 targetPoints 的情况下, // 所能找到的最小时间组合 void seek(int ind, int currTime, int targetPoints) { // 分数凑齐了 if (neededPoints == 0 ){ result = Math.min(result, currTime) } // 因为points有经过排序,所以直接跳到没有比 targetPoints大的菜 while (ind> 0 && points[ind] > targetPoints) {ind--;} // 没菜可以做了 if(ind < 0){ return;} // 选择做第ind道菜的情况 seek(ind-1, currTime+times[ind], targetPoints - points[ind]); // 选择不做第ind道菜的情况 seek(ind-1, currTime, targetPoints); } // 找寻最小时间 int main() { seek(n-1, 0, g); if (result < Integer.MAX_VALUE) { return result; } else { return -1; } } -- 角卷绵芽给予炭治郎的建议 https://i.imgur.com/0mPdESk.jpg https://i.imgur.com/Ts4dBjy.jpg --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 98.45.195.96 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Math/M.1729049316.A.BD8.html ※ 编辑: arrenwu (98.45.195.96 美国), 10/16/2024 11:29:34
1F:推 cornerstone : 真的太谢谢您了!感觉有点头绪,不过还需要时间想想 10/16 12:37







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP