用乙個陣列dp記錄以該元素開始的所對應最長不下降子串行的長度。初始化dp
經過迴圈執行後形成下表:
程式如下:
//最長不下降子串行
#include
using
namespace
std;
int dp[105];
int lis(int *a, int n) else
continue;
}//防止倒數第二個元素dp自加1
if (i != n-2 || a[n-2] < a[n-1]) dp[i] += dp[max_dp_i];
if (max_length < dp[i]) max_length = dp[i];
} return max_length;
}int main()
cout
<< lis(a, n) << endl;
}
由一小段的最優出發,推出整體的最 最長不降子串行 動態規劃
2008 4 8 最長不降子串行 小明晚上回家後,和爸爸玩這樣的乙個遊戲 給出n個 0一 動態規劃演算法 本題是比較簡單的動態規劃,請理解好遞推的過程。具體方法是對於陣列a,另設一陣列b,將b陣列內元素全置1,表示最短子串行長度為1。從陣列a左到右乙個個判斷,每判斷乙個,則從這個元素向右尋找,找到比...
動態規劃 最長不降子串行 NlogN演算法
nlogn演算法精髓在於設立陣列dp dp i 表示長度為i的不下降序列中結尾元素的最小值,用len表示陣列目前的長度,演算法完成後len的值即為最長不下降子串行的長度。設當前的以求出的長度為len,則判斷num i 和dp len 1.如果num i dp len 即num i 大於長度為len的...
求最長不降子串行(動態規劃)
求最長不下降子串行 動態規劃 狀態轉移方程 length i 1 length j j為data i data j 的情況下能使length j 取到最大的值 初始情況length 1 1 且length 0 0,這樣求出來的length j 才可以取到0 include int data 15 下...