動態規劃 求最長上公升子串行長度

2021-07-27 14:39:07 字數 572 閱讀 4425

/*

*問題描述:求最長上公升子串行長度

*/#include #include #include using namespace std;

const int maxn = 1010;

int a[maxn];//儲存輸入的資料

int maxlen[maxn];//儲存從開始到每乙個資料中最長上公升子串行長度

int main()

for(int i =2;i<=n;i++)

cout <

return 0;

}

執行結果;

總結:能用動態規劃解決的問題的特點

1、問題具有最優子結構的性質。如果問題的最優解所包含的

子問題的解也是最優的,我們就稱該問題具有最優子結構性質

2、無後效性。當前的若干狀態值一旦確定,則此後過程的演變就只和這若干狀態的值有關,和之前是

採取哪種手段或經過那條路徑演變到當前的這若干個狀態,沒有關係

最長上公升子串行長度 LIS O nlogn 演算法

此前在動態規劃一講 動態規劃 3 最長遞增子串行 曾說過此問題,當前是的雙重迴圈是o n 2 的複雜度。後來在網上看到說lis問題有o nlogn 的演算法,於是拿來小研究了一下。這個演算法其實已經不是dp了,有點像貪心。至於複雜度降低其實是因為這個演算法裡面用到了二分搜尋。本來有n個數要處理是o ...

最長上公升子串行求長度

普通dp 複雜度o 2 1 include 2 using namespace std 34 const int n 1010 5 inta n dp n n 67 intmain 1819 int res 0 20 for int i 1 i n i 21 res max res,dp i 222...

413,動態規劃求最長上公升子串行

給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4 解釋 最長的上公升子串行是 2,3,7,101 它的長度是 4。動態規劃我們用dp i 表示陣列的前i個元素構成的最長上公升子串行,如果要求dp i 我們需要用num i 和前面的數...