dp = [[0] * (len(text1) + 1) for _ in range(len(text2)+1)]
for i in range(1, len(dp)):
for j in range(1, len(dp[0])):
dp[i][j] = dp[i-1][j-1] + 1 if text1[j-1] == text2[i-1] else max(dp[i-1][j], dp[i][j-1])
return dp[-1][-1]
LeetCode.1035 不相交的线
dp = [[0] * (len(nums1) + 1) for _ in range(len(nums2)+1)]
for i in range(1, len(dp)):
for j in range(1, len(dp[0])):
dp[i][j] = dp[i-1][j-1] + 1 if nums1[j-1] == nums2[i-1] else max(dp[i-1][j], dp[i][j-1])
return dp[-1][-1]
LeetCode.53 最大子数组和
for i in range(1, len(nums)):
if nums[i-1] > 0:
nums[i] += nums[i-1]
return max(nums)