最長連續子串行和

2021-10-06 09:52:51 字數 1051 閱讀 8265

動態規劃

一維dp[i]表示以i結尾的子陣列的最大和

以下**可以記錄子陣列的開始和結束位置

//要求輸出子串行和的第乙個和最後乙個

#include

#include

//兩個輔助陣列

const

int maxn=

1000

;int dp[maxn]

;int pre[maxn]

;//存放子串行的開始

int arr[maxn]

;using

namespace std;

intmaxsubarray

(int arr,

int n,

int&flag)

else

if(dp[i]

>res)

}return res;

}int

main()

for(

int i=

0;i)int flag=0;

cout<<

maxsubarray

(arr,n,flag)

<<

" ";

cout<

]<<

" "<

<

/* for (int i = 0; i < n;i++)*/

}return0;

}

二維 最大子矩陣

要學會降維!

一開始沒想到,參考了別人的**

#include

#include

using

namespace std;

intmaxsub

(int a,

int n)

return max;

}int

main()

} cout<

}}

最長公共連續子串和最長連續公共子串行

用二維陣列c i j 記錄串x1 x2 x i x1x2 xi與y 1y 2 y j y1y2 yj 的lcs長度,則可得到狀態轉移方程c i,j 0c i 1 j 1 1max c i,j 1 c i 1,j i 0 orj 0i,j 0a ndxi y j i,j 0a ndxi y j pub...

最長連續子串行變種

在蒜廠年會上有乙個 在乙個環形的桌子上,有 n 個紙團,每個紙團上寫乙個數字,表示你可以獲得多少蒜幣。但是這個遊戲比較坑,裡面竟然有負數,表示你要支付多少蒜幣。因為這些數字都是可見的,所以大家都是不會出現的賠的情況。遊戲規則 每人只能抓一次,只能抓取一段連續的紙團,所有紙團上的數字和就是你可以獲得的...

求最長連續公共子串行和最長連續子字串

問題的關鍵是如何定義子問題。假設有 xm x1 x2 x3 xm yn y1 y2 y3 yn 1.最長公共子串行 不必連續 定義f m,n 為xm和yn之間最長的子串行的長度 於是有f m,0 f 0,m 0 如果xm yn,則f m,n max 如果xm yn,則f m,n f m 1,n 1 ...