資料結構與演算法練習 動態規劃

2021-07-11 18:21:32 字數 580 閱讀 2317

hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如:,連續子向量的最大和為8(從第0個開始,到第3個為止)。你會不會被他忽悠住?

要根據前面的數字和大於0和小於0分兩種情況進行討論;

public

int findgreatestsumofsubarray(int array)

int tempsum = 0;

int sum = array[0];

for (int i = 0; i < array.length; i++)

return sum;

}

public

void

testfindgreatestsumofsubarray() ;

assertequals(8, solution.findgreatestsumofsubarray(array));

}

演算法與資料結構 動態規劃

動態規劃 dp 的基本思想是 當前子問題的解可由上一子問題的解得出。動態規劃演算法通常基於由乙個遞推公式 狀態轉移方程 和若干個初始狀態 狀態 應用 1 lis longest increasing subsequence 求乙個陣列中的最長非降子串行的長度。子問題 我們可以考慮先求a 0 a 1 ...

演算法與資料結構 動態規劃

用遞迴求解問題時,反覆的巢狀會浪費記憶體。而且更重要的一點是,之前計算的結果無法有效儲存,下一次碰到同乙個問題時還需要再計算一次。例如遞迴求解 fibonacci 數列,假設求第 n 位 從 1 開始 的值,c 如下 include intfib int n return fib n 1 fib n...

資料結構與演算法 156 159 動態規劃

揹包問題 有乙個揹包,容量為4磅,物品重量 吉他 g 11500 音響 s 43000 電腦 l 32000 動態規劃演算法介紹 動態規劃演算法最佳實踐 揹包問題 物品重量 吉他 g 11500 音響 s 43000 電腦 l 32000 思路和 v i 0 0 j 0 當 w i j時 v i j...