1.問題
最長公共子串行問題:
給定序列x=和y=,求x和y的最長公共序列。
2.解析
對於字串:aceghi 和 bcdefgh
lcs二維**
3.設計
def lcs
(x, y)
: m =
len(x)+1
n =len(y)+1
if m ==
1 or n ==1:
print
("存在空字串!"
)return-1
lcs_len = numpy.
zeros
((m,n)
)for i in range(1
, m)
:for j in range(1
, n):if
(x[i -1]
== y[j -1]
):lcs_len[i]
[j]= lcs_len[i -1]
[j -1]
+1else
: max_len = lcs_len[i -1]
[j]if lcs_len[i]
[j -1]
> lcs_len[i -1]
[j]:
max_len = lcs_len[i]
[j -1]
lcs_len[i]
[j]= max_len
i = m -
2 j = n -
2 ns =
''while1:
if i ==
-1 or j ==-1
:break
if x[i]
== y[j]
: ns= x[i]
+ns i = i -
1 j = j -
1else
:if lcs_len[i]
[j +1]
> lcs_len[i +1]
[j]:
i = i -
1else
: j = j -
1print
(ns)
4.分析時間複雜度:o(n * m) //n和m為兩條字串的長度 演算法設計與分析作業(1)
1.dijkstra求單源最短路徑 先進行存圖操作,將帶權有向圖用鄰接矩陣來表示 for int i 0 i u v dist map u v dist 用dis陣列來儲存0點到其他每乙個點的最短距離,初始時dis i map 0 i 接下來進行鬆弛操作,找出最短距離 首先0點為q集合中的點,0 1...
演算法分析與設計 作業1
問題 舉乙個例項,畫出採用prim演算法構造最小生成樹的過程 1 首先選定頂點1加入最小生成樹集合 2 以頂點1作為最小生成樹集合,尋找到其餘頂點構成的未選集合中權值最小的一條邊,此處尋找到頂點2,並將頂點2加入集合。3 以頂點2 3作為最小生成樹集合,尋找至其餘頂點構成集合權值最小的邊,此處找到頂...
演算法分析與設計作業8
1.問題 給定一定個矩陣序列,求出該矩陣序列的乘積所需計算的最少乘法次數。2.解析 運用動態規劃的思想,將矩陣依次分割並記錄所需乘法次數,找出其中最小的被下一級使用。例 矩陣序列 a1 30 35 a2 35 15 a3 15 5 a4 5 10 a5 10 20 a6 20 25 步驟 r 1 r...