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/m.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燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP