兩種動態規劃法
一、當前柵欄i與之前柵欄i-1顏色相同,更之前柵欄i-2的塗色方案為f(i-2),當前柵欄的塗色方式有k-1種。
i與i-1的顏色不一樣,當前柵欄顏色塗色方式有k-1種
f(i)=f(i-2)*k-1+f(i-1)*k-1
二、當前i的顏色,由i-1和i-2的顏色是否相同決定
從i=2開始
int diff_color = k * (k - 1);
int same_color = k;
i=1時有k種塗法,i=2時與i-1相同顏色有k中塗法,與i-1不同由k*(k-1)種塗法
總數是diff_color+same_color
i=3時,i與i-1不同的塗法是(diff_color+same_color) (k-1)每種情況都有除開自己顏色的塗法
而i與i-1相同的塗法 只能是diff_colork,必須滿足前兩個顏色不同,這裡才能相同。
276 柵欄塗色
題目描述 有 k 種顏色的塗料和乙個包含 n 個柵欄柱的柵欄,每個柵欄柱可以用其中一種顏色進行上色。你需要給所有柵欄柱上色,並且保證其中相鄰的柵欄柱 最多連續兩個 顏色相同。然後,返回所有有效塗色的方案數。注意 n 和 k 均為非負的整數。示例 輸入 n 3,k 2 輸出 6 解析 用 c1 表示顏...
276 柵欄塗色
當只有乙個柱子需要塗色時,有k種可塗色方案 當有兩個柱子需要塗色時,有k k 1 diff k same 種塗色方案 當有三個柱子需要塗色時,有 same diff k 1 diff diff same 種方案。1 class solution object 2def numways self,n,...
LeetCode276 柵欄塗色
1.題目描述 有 k 種顏色的塗料和乙個包含 n 個柵欄柱的柵欄,每個柵欄柱可以用其中一種顏色進行上色。你需要給所有柵欄柱上色,並且保證其中相鄰的柵欄柱 最多連續兩個 顏色相同。然後,返回所有有效塗色的方案數。注意 n 和 k 均為非負的整數。示例 輸入 n 3,k 2 輸出 6 解析 用 c1 表...