房屋染色 LintCode

2021-08-10 01:59:56 字數 876 閱讀 8874

這裡有n個房子在一列直線上,現在我們需要給房屋染色,分別有紅色藍色和綠色。每個房屋染不同的顏色費用也不同,你需要設計一種染色方案使得相鄰的房屋顏色不同,並且費用最小。

費用通過乙個nx3 的矩陣給出,比如cost[0][0]表示房屋0染紅色的費用,cost[1][2]表示房屋1染綠色的費用。

注意事項:

所有費用都是正整數

樣例:

costs = [[14,2,11],[11,14,5],[14,3,10]] return 10

房屋 0 藍色, 房屋 1 綠色, 房屋 2 藍色, 2 + 5 + 3 = 10

思路:

修改costs矩陣的值,對於每一行, co

sts[

i][j

]=co

sts[

i][j

]+mi

n(co

sts[

i−1]

[(j+

1)%3

],co

sts[

i−1]

[(j+

2)%3

])求修改後矩最後一行的最小值,即為結果。

#ifndef c515_h

#define c515_h

#include

#include

using

namespace

std;

class solution

}return minval(costs[size - 1][0], minval(costs[size - 1][1], costs[size - 1][2]));

}int minval(int a,int b)

};#endif

LintCode 房屋染色II

這裡有n個房子在一列直線上,現在我們需要給房屋染色,共有k種顏色。每個房屋染不同的顏色費用也不同,你需要設計一種染色方案使得相鄰的房屋顏色不同,並且費用最小。費用通過乙個nxk的矩陣給出,比如cost 0 0 表示房屋0染顏色0的費用,cost 1 2 表示房屋1染顏色2的費用。經典的動態規劃問題,...

LintCode 516 房屋染色II

序列型動態規劃 與lintcode 515類似,由於顏色數從3變為k,源 經過簡單修改也可ac。time 3142mspublic class solution int res integer.max value for int i 0 i return res 但可在尋找最小值時進行優化,將原演算...

lintcode 打劫房屋

假設你是乙個專業的竊賊,準備沿著一條街打劫房屋。每個房子都存放著特定金額的錢。你面臨的唯一約束條件是 相鄰的房子裝著相互聯絡的防盜系統,且 當相鄰的兩個房子同一天被打劫時,該系統會自動報警。給定乙個非負整數列表,表示每個房子中存放的錢,算一算,如果今晚去打劫,你最多可以得到多少錢 在不觸動報警裝置的...