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

2021-06-22 01:32:54 字數 1253 閱讀 3233

//買書問題,

//如果一種書籍五冊,單獨買一冊8元,買兩冊不同的打95折,買三冊不同的書籍9折,買四冊不同的書籍8折,買五冊不同書籍75折,問怎麼買書最便宜。

//比如買2本一冊,2本2冊,2本三冊,1本4冊,1本5冊

//那麼最優打折方式就是:分兩次購買,一本一冊,一本二冊,一本三冊和一本四冊,然後就是剩下的書籍

//此問題用到動態規劃,

#include #include #include using namespace std;

//預設x1>x2>x3>x4>x5;

double money(int x1,int x2,int x3,int x4,int x5)

if(x1 == 0)

return 0;

double res1,res2,res3,res4,res5;

res1 = res2 = res3 = res4 = res5 = 0;

if(x5 >= 1)

res5 = 5 * 8 * (1 - 0.25) + money(x1 - 1, x2 - 1,x3 - 1, x4 - 1, x5 - 1);

if(x4 >= 1)

res4 = 4 * 8 * (1 - 0.2) + money(x1 - 1, x2 - 1,x3 - 1, x4 - 1, x5);

if(x3 >= 1)

res3 = 3 * 8 * (1 - 0.1) + money(x1 - 1, x2 - 1,x3 - 1, x4, x5);

if(x2 >= 1)

res2 = 2 * 8 * (1 - 0.05) + money(x1 - 1, x2 - 1,x3, x4, x5);

if(x1 >= 1)

res1 = 8 + money(x1 - 1, x2, x3, x4, x5);

if(x2 == 0)

return res1;

if(x3 == 0)

return min(res1,res2);

if(x4 == 0)

return min(res1,min(res2,res3));

if(x5 == 0)

return min(res1,min(res2,min(res3,res4)));

if(x5 > 0)

return min(res1,min(res2,min(res3,min(res4,res5))));

}int main()

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

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

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

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

程式設計之美 買書問題

今天小夥伴在群裡給出了一道題 分享一道題,有興趣的可以做做哈。假設 冰與火之歌 有五卷,每一捲單獨買是20塊。兩卷連買減5 三卷連買減10 四卷連買減20 五卷連買減25 買相同的卷不打折。比如買兩本卷一,一本卷二,總 是58元。現買了一批書n,計算出它的最低 一看到這道題,瞬間就覺得這麼簡單有什麼...