1樓:匿名使用者
題目如下:最大的和。
一天,笨笨帶著一道題目找到了你,希望你能幫她解決這道題目:
給你n個數a[1], a[2], a[n],(0
using namespace std;
int n,l1,l2;
int a[16000];
int num[16000]; 當前取最大值時所包含的連續的元素個數。
int maxvalue[16000]; 第i個元素的最大值。
int f(int n)//第n個元素的最大值,即為狀態。
if (n ==1)
num[n] =1;
return maxvalue[n] =a[1];
int max1 = a[n] +f(n-1); 當前的鎮衡亮最大值。
if (max1 <=a[n]) 如果比當前值要小,說明最大值為當前值。
num[n] =1;
max1 = a[n];
else num[n] =num[n-1];
如果連續元素個數比l2要大,則去除多餘的元素個數。
if (num[n] >l2)
num[n] =l2;
max1 -=a[n-l2];
如果連續元素個數比l1要小,則補足缺少的元素個數。
if (n >=l1 &&num[n] for (int i = n-num[n]; i > n-l1+1; i--)
max1 +=a[i];
num[n] =l1;
return maxvalue[n] =max1;
int main()
cin >>n >>御寬 l1 >>l2;
for (int i = 1; i <=n; i++)
cin >>a[i];
f(n);int maxd = maxvalue[l1];
for (int i = l1; i <=n; i++)
if (maxd < maxvalue[i])maxd = maxvalue[i];
cout return 0;
總結:雖然測試了幾組資料,還通得過,但不知正確與否。攔頌其次,對動態規劃的理解不深刻,用了很長的時間才寫出來。數學功底不夠紮實。不足之處還望高手指點。
2樓:匿名使用者
這是動態規劃的一道經典題,幾乎所有演算法的書中都有,把舊書多看兩遍,自己就能解決。
如何理解動態規劃
3樓:用英語999u嗚嗚
我這裡寫了一篇自己經歷得動態規劃,由簡單道深刻理解,肯定會有所幫助。
關注 計算廣告生態 回覆dp 獲取最透徹的動態規劃講解。
什麼是動態規劃演算法,常見的動態規劃問題分析與求解
4樓:瀟水香蓮
動態規劃中遞推式的求解方法不是動態規劃的本質,本質,是對問題狀態的定義和狀態轉移方程的定義。
動態規劃能求得問題最優解的依據是什麼?
5樓:網友
首先是全域性(最終)的最優解必定可以從部分(子問題)的最優解計算得到。
其次是小規模的最優解可以計算較大規模的最優解,可以計算是說,當前的計算不影響後面最優情況。
在一定程度上可以理解成遞推。
適合用動態規劃方法求解的問題必須具備何種特徵
6樓:網友
可以用動態規劃的問題的基本特徵:
1,最優子結構。
母問題的最優解包含其子問題的最優解,我們就稱此問題具有最優子結構。即也就是說,子問題最優時,母問題通過優化一定能求得最優解。
2,子問題重疊。
子問題本質上是和母問題一樣的,只是問題的輸入引數不一樣,就可以稱之為子問題重疊,這是動態規劃解決問題的高效的本質所在,我們可以利用很多子問題具有相同的輸入引數這乙個性質,來減少計算量。
3,問題存在邊界。
子問題在一定情況下就不存在子問題了, 我們稱這種情況為問題存在邊界,對於自頂向上和自底向下的方法,邊界分別是問題的出口和入口。
4,子問題相互獨立。
個子問題在求解最優解時事相互獨立的,即本自問題的求解和其他平行子問題是不相干的。當平行子問題解決後,選擇權交給母問題時,它才會考慮各子問題之間的關係,是求最大值還是最小值,還是要做相關的運算得到母問題的最優解。
7樓:他暖了冬季
動態規劃的子問題是不獨立的,很多子問題重複。
用動態規劃求解非線性規劃問題:
8樓:網友
設 max z=x1*(x2^2)*x3
x1+x2*2+x3<=8
x1,x2,x3>=0
將該問題分為三個階段,令s0,s1,s2,s3分別表示狀態變數,且s3<=8,取x1,x2,x3為各階段決策變數,最優值函式fk(sk)表示第k階段結束狀態為sk時從第1至第k階段的最大值,故。
x1=s1,2*x2+s1=s2,x3+s2=s3<=8所以 x1=s1,0=f1(s1)=max(x1)[其中 x1=s1]則 (x1)* =s1 , f1(s1)=s1f2(s2)=max(x2^2*f1(s1))=max[x2^2*(s2-2*x2)]
其中 0=則 (x2)* =s2/3 , f2(s2)=(s2^3)/27f3(s3)=max(x3*f2(s2))=max[x3*(s2^3)/27]
其中 0=則 (x3)* =s3/4 , f3(s3)=(s3^4)/256經分析可知,當s3=8時,f3(s3)=(s3^2)/4=16此時達最大。故反推得:
x3)* =s3/4=2 ,s2=s3-x3=8-2=6(x2)* =s2/3=2 ,s1=s2-2*x2=6-4=2(x1)* =s1=2.
max z=x1*(x2^2)*x3=16
有關幾何概率的問題,如何理解概率論中的幾何概率
因為根據題意有 x y ,所以概率就是y x y x x x y y 這幾根直線圍成的面積佔x x y y 這根直線圍成的面積 也就是面積為的正方形 的比例。這種 用幾何法求面積比值 把問題轉化為二維面積比值是最簡單的解題方法。lz想法沒問題,兩個點沒有先後關係的。問題是不學完大學概率論你分辨不出什...
如何理解《關於貫徹執行民法通則若干問題的意見》第147條
第89條現行有效!最高人民法院關於貫徹執行 中華人民共和國民法通則 若干問題的意見 釋出部門 最高人民法院 發文字號 法 發 1988 6號 批准部門 批准日期 釋出日期 1988.04.02 實施日期 1988.04.02 時效性 部分失效 效力級別 司法解釋 法規類別 民法通則注 本篇法規中第8...
運動訓練學的任務。。等問題,如何正確理解運動訓練學的課程內容
運動訓練學 是研究運動訓練規律的科學,它系統地闡明了運動訓練的目的 任務 訓練的原則 訓練的基本內容 方法,以及訓練過程的結構 組織 控制和訓練計畫的安排等內容。速度素質是指人體進行快速運動的能力或用最短時間完成某種運動的能力。按其在運動中的表現可以分為反應速度 動作速度和週期性運動的位移速度三種形...