這道題首先想到的是貪心,但是很不好分析正確性。演算法上講的,貪心演算法需要具有最優子結構和貪心選擇的性質,在這裡都不好證明。然後就是動態規劃了,貼一下我的實現**,我努力的使**簡潔一些,可還是不太好看。
#include #include #include using std::cin;
using std::cout;
using std::endl;
double res[20][20][20][20][20];
const double discount[5] = ;
template int comp(const void *a, const void *b)
double get_min(double* a, int length)
double find_best(int a, int b, int c, int d, int e);
qsort(num, 5, sizeof(int), comp);
if(num[0] == 0)
return 0.0;
a = num[0]; b = num[1]; c = num[2]; d = num[3]; e = num[4];
if(res[a][b][c][d][e]>0)
return res[a][b][c][d][e];
double tp[5], t_res;
memset(tp, 0, sizeof(tp));
int length = 0;
if(e>0)else if(d>0)else if(c>0)else if(b>0)else
for(int i=0;i>num[i];
} cout<
買書問題的動態規劃實現
encoding utf 8 買書問題 貪心演算法是失效的,5,3 5,4單個並不是最優的,這次選擇會影響下一次的選擇的 比如反例 5,5,5,3,3 貪心的策略為 5,5,5,3,3 133.2,改進的貪心策略為 5,5,4,4,3 132.8,而實際的最優的策略為 5,4,4,4,4 132.4...
買書優惠問題
1,題目 書店針對 哈利波特 系列書籍進行 活動,一共5卷,用編號0 1 2 3 4表示,單獨一捲售價8元,具體折扣如下所示 本數折扣 5 10 20 25 根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應乙個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5 的折扣,另外一本卷...
最優買書問題
1.題目 書店針對 哈利波特 系列書籍進行 活動,一共5卷,用編號0 1 2 3 4表示,單獨一捲售價8元,具體折扣如下所示 本數 折扣 2 5 3 10 4 20 5 25 根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應乙個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5 ...