-
Notifications
You must be signed in to change notification settings - Fork 7
动态规划
solei1 edited this page Mar 22, 2017
·
1 revision
状态: d[i] 记录钱数是i 需要的最少的硬币数
状态转移方程:d[i] = min{ d[i-m[j]]+1 } m = [1,3,5]
def get_min_num(money):
m = [1, 3, 5]
d = [i for i in range(money+1)]
d[0] = 0
for i in range(1, money+1):
min_num = 0
for j in range(3):
if i-m[j] >= 0:
d[i] = min((d[i-m[j]])+1, d[i])
print(d)
状态:d[i] 为 以 A[i]结尾的最长非降子序列的长度
状态转移方程:d[i] = max{1, d[j]+1},其中j<i,A[j]<=A[i]
def LIS(l, n):
d = [i for i in range(n)]
d[0] = 1
for i in range(1, n):
max_dj = 1
for j in range(i):
if l[j] <= l[i]:
max_dj = max(d[j]+1, max_dj)
d[i] = max_dj
print(d)