91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

買書問題 dp實現 題目:買書 有一書店引進了一套書,共有3卷,每卷書定價是60元,書店為了搞促銷,推出一個活動,活動如下: 如果單獨購買其中一卷,那么可以打9.5折。 如果同時購買兩卷不同的,那么可以打9折。 如果同時購買三卷不同的,那么可以打8.5折。 如果小明希望購買第1卷x本,第2卷y本,第3卷z本,那么至少需要多少錢呢?(x、y、z為三個已知整數)。 1、過程為一次一次的購買,每一次購買也許只買一本(這有三種方案),或者買兩本(這也有三種方案), 或者三本一起買(這有一種方案),最后直到買完所有需要的書。 2、最后一步我必然會在7種購買方案中選擇一種,因此我要在7種購買方案中選擇一個最佳情況。 3、子問題是,我選擇了某個方案后,如何使得購買剩余的書能用最少的錢?并且這個選擇不會使得剩余的書為負數 。母問題和子問題都是給定三卷書的購買量,求最少需要用的錢,所以有"子問題重疊",問題中三個購買量設置為參數, 分別為i、j、k。 4、的確符合。 5、邊界是一次購買就可以買完所有的書,處理方式請讀者自己考慮。 6、每次選擇最多有7種方案,并且不會同時實施其中多種,因此方案的選擇互不影響,所以有"子問題獨立"。 7、我可以用minMoney[i][j][k]來保存購買第1卷i本,第2卷j本,第3卷k本時所需的最少金錢。 8、共有x * y * z個問題,每個問題面對7種選擇,時間為:O( x * y * z * 7) = O( x * y* z )。 9、用函數MinMoney(i,j,k)來表示購買第1卷i本,第2卷j本,第3卷k本時所需的最少金錢,那么有: MinMoney(i,j,k)=min(s1,s2,s3,s4,s5,s6,s7),其中s1,s2,s3,s4,s5,s6,s7分別為對應的7種方案使用的最少金錢: s1 = 60 * 0.95 + MinMoney(i-1,j,k) s2 = 60 * 0.95 + MinMoney(i,j-1,k) s3 = 60 * 0.95 + MinMoney(i,j,k-1) s4 = (60 + 60) * 0.9 + MinMoney(i-1,j-1,k) s5 = (60 + 60) * 0.9 + MinMoney(i-1,j,k-1) s6 = (60 + 60) * 0.9 + MinMoney(i-1,j,k-1) s7 = (60 + 60 + 60) * 0.85 + MinMoney(i-1,j-1,k-1)

資源截圖

代碼片段和文件信息

#include

#define?MAX?8888

using?namespace?std;

int?xyz;
int?mm[50][50][50];

int?min(int?s1int?s2int?s3int?s4int?s5int?s6int?s7)
{
int?mini=s1;
if?(s2 if?(s3 if?(s4 if?(s5 if?(s6 if?(s7 return?mini;
}

int?MinMoney(int?iint?jint?k)
{
int?s1s2s3s4s5s6s7s8s9;?
if?(i==0&&j==0&&k==0)?return?0;
if?(i!=0)?s1?=?60?*?0.95?+?MinMoney(i-1jk);?else?s1=MAX;
if?(j!=0)?s2?=?60?*?0.95?+?MinMoney(ij-1k);?else?s2=MAX;
if?(k!=0)?s3?=?60?*?0.95?+?MinMoney(ijk-1);?else?s3=MAX;
if?(i!=0&&j!=0)?s4?=?(60?+?60)?*?0.9?+?MinMoney(i-1j-1k);?else?s4=MAX;
if?(i!=0&&k!=0)?s5?=?(60?+?60)?*?0.9?+?MinMoney(i-1jk-1);?else?s5=MAX;
if?(j!=0&&k!=0)?s6?=?(60?+?60)?*?0.9?+?MinMoney(ij-1k-1);?else?s6=MAX;
if?(i!=0&&j!=0&&k!=0)?s7?=?(60?+?60?+?60)?*?0.85?+?MinMoney(i-1j-1k-1);?else?s7=MAX;
return?min(s1s2s3s4s5s6s7);
}

int?main(void)
{
cin>>x>>y>>z;
cout< return?0;
}

/*
題目:買書
有一書

評論

共有 條評論