defmax_sub_array(nums):
ans = nums[0]
sum_ =0for ele in nums:if sum_ >0:
sum_ += ele
else:
sum_ = ele
ans =max(sum_,ans)return ans
2. m*n矩阵的不同路径数
a =[[0]*101for _ inrange(101)]defunique_paths(m, n):if(m <=0or n <=0):return0elif(m ==1or n ==1):return1elif(m ==2and n ==2):return2elif(m ==2and n ==3)or(m ==3and n ==2):return3if a[m][n]>0:return a[m][n]
a[m-1][n]= unique_paths(m-1,n)
a[m][n-1]= unique_paths(m,n-1)
a[m][n]= a[m-1][n]+ a[m][n-1]return a[m][n]
3.编辑距离
defedit_distance(word1,word2):
n =len(word1)
m =len(word2)if n*m ==0:#有一个字符串为空return n+m
d =[[0]*(m+1)for _ inrange(n+1)]for i inrange(n+1):
d[i][0]= i
for j inrange(m+1):
d[0][j]= j
for i inrange(1,n+1):for j inrange(1,m+1):
right = d[i][j-1]+1# 插入
down = d[i-1][j]+1# 删除
right_down = d[i-1][j-1]# 替换if word1[i-1]!= word2[j-1]:
right_down +=1
d[i][j]=min(right, down, right_down)return d[n][m]