程式設計之美 1 4 買書問題 貪心思路的分析

2021-09-30 07:59:14 字數 1023 閱讀 3608

這段時間太忙,好久沒有寫csdn了,今天在重新看程式設計之美1.4買書問題的時候有了新的體會,於是就記錄下來。看來真是「溫故而知新」

1.5首先給出了乙個動態規劃版本,我第一次看程式設計之美的時候,自己一下子也想到了動態規劃版本,就沒往後看了。今天重新看了下才知道後面的貪心才是精華。

(1)按照正常的思路,我們有了以下貪心策略:購買y5本5卷,購買y4-y5本4卷,購買y3-y4本3卷,購買y3-y4本3卷,購買y2-y3本2卷,購買y1-y2本1卷

(2)這樣,按照上述策略,我們可以得到總代價為:

total_cost = y5 * 5 * 8 * (1 - 25%) +

(y4 - y5) * 4 * 8 * (1 - 20%) +

(y3 - y4) * 3 * 8 * (1 - 10%) +

(y2 - y3) * 2 * 8 * (1 - 5%) + 

(y1 - y2) * 1 * 8 * 100%

= 8      * (y1 - y2) + 

15.2 * (y2 - y3) +

21.6 * (y3 - y4) + 

25.6 * (y4 - y5) +

30    * y5       --------------------   式a

(3)觀察式a,我們這個貪心策略一定是最優的嗎? 如果不是該怎麼調整?

觀察式a,我們可以把1個3卷和1個5卷合併成2個4卷,合併之前的所附付金額是 p1 = 21.6 + 30 = 51.6,

和並之後的金額是p2 = 2 × 25.6 = 51.2。 p2 < p1,所以這個合併調整可以取得更優的結果。其他的合併調整策略,如1個1卷和

1個3卷合成2個2卷,都會使所付金融邊打,因此不能使結果更優。所以調整的策略只有1個3卷和1個5卷合併調整成2個4卷。

(4)通過上述分析,我們得到最終貪心策略:

購買y5 - k 本卷5,y4 - y5 + 2k本卷4,y3 - y4 - k本卷3, y2 - y3本卷2, y1 - y2本卷1, k = min(y3 - y4, y5), end...

買書問題 程式設計之美1 4

買書問題,如果一種書籍五冊,單獨買一冊8元,買兩冊不同的打95折,買三冊不同的書籍9折,買四冊不同的書籍8折,買五冊不同書籍75折,問怎麼買書最便宜。比如買2本一冊,2本2冊,2本三冊,1本4冊,1本5冊 那麼最優打折方式就是 分兩次購買,一本一冊,一本二冊,一本三冊和一本四冊,然後就是剩下的書籍 ...

程式設計之美 1 4 買書問題

1.4 買書問題 在 節假日的時候,書店一般都會做 活動。由於 哈利波特 系列相當暢銷,店長決定通過 活動來回饋讀者。在銷售的 哈利波特 平裝本系列中,一共有五 卷,用編號0,1,2,3,4來表示。假設每一捲單獨銷售均需要8歐元。如果讀者一次購買不同的兩卷,就可以扣除5 的費用,三卷則更多。假設具體...

程式設計之美 1 4 買書問題

題目 在節假日的時候,一般書店都會做 假設一套書共有5冊,沒冊書的定價都是相同的30元,店家為了 推出了乙個方案,具體如下 這裡的折扣是每本書都享受這個折扣,當然前提是購買不同的冊,比如買10本第一冊,那是不會有折扣的 買兩本第一冊,一本第二冊,那其中的有一本第一冊是不能享受折扣的。現在需要你設計乙...