力扣276柵欄塗色

2021-09-26 09:33:29 字數 482 閱讀 3865

兩種動態規劃法

一、當前柵欄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 表...