房屋染色 II 这里有n个房子在一列直线上,现在我们需要给房屋染色,共有k种颜色。每个房屋染不同的颜色费用也不同,你希望每两个相邻的房屋颜色不同,但是这样可能会使得成本上升。因此你决定可以有一个长度不超过t的区间,这之间的房屋可以染成同一种颜色。费用通过一个nxk 的矩阵给出,比如cost[0][0]表示房屋0染颜色0的费用,cost[1][2]表示房屋1染颜色2的费用。
Code
def minCostII(self, costs):
# write your code here
if costs is None or len(costs)==0 or len(costs[0])==0:
return 0
m=len(costs)
n=len(costs[0])
dp=[[0]*n for _ in range(m+1)]
for j in range(0,n,1):
dp[0][j]=0
for i in range(1,m+1,1):
min1,min2=float('inf'),float('inf')
j1,j2=0,0
for j in range(0,n,1):
if dp[i-1][j]<min1:
min2=min1
j2=j1
min1=dp[i-1][j]
j1=j
else: