過去幾天我一直在學習動態編程,并遇到了公路廣告牌問題。據我所知,我們能夠找到從可能的站點、收入、高速公路的大小以及兩個特定廣告牌之間的最小距離中產生的最大收入。有沒有一種可能的方法,我們還可以找出最大收入旁邊的實際廣告牌位置。
對于我一直在查看的代碼https://www.geeksforgeeks.org/highway-billboard-problem/
uj5u.com熱心網友回復:
是的,可以寫下所選站點的順序。
有兩個max函式呼叫。將它們替換為自己的最大選擇if,并在使用當前站點的分支內部,將當前位置添加到串列中(max據我所知,添加到第一個子句中的空串列中)
例如,
maxRev[i] = max(maxRev[i-1], revenue[nxtbb]);
更改為此(偽代碼,未檢查有效性)
if (revenue[nxtbb] > maxRev[i-1]) {
maxRev[i] = revenue[nxtbb];
sitelist.clear();
sitelist.push(i);
}
else
maxRev[i] = maxRev[i-1];
和
maxRev[i] = max(maxRev[i-t-1] revenue[nxtbb], maxRev[i-1]);
改成
if (maxRev[i-t-1] revenue[nxtbb] > maxRev[i-1]) {
maxRev[i] = maxRev[i-t-1] revenue[nxtbb];
sitelist.push(i);
}
else
maxRev[i] = maxRev[i-1];
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/337036.html
上一篇:縮放后如何計算網格內給定點的坐標
