276 柵欄塗色

2021-10-09 00:14:55 字數 1182 閱讀 4280

題目描述:

有 k 種顏色的塗料和乙個包含 n 個柵欄柱的柵欄,每個柵欄柱可以用其中一種顏色進行上色。

你需要給所有柵欄柱上色,並且保證其中相鄰的柵欄柱 最多連續兩個 顏色相同。然後,返回所有有效塗色的方案數。

注意:

n 和 k 均為非負的整數。

示例:

輸入: n = 3,k = 2

輸出: 6

解析: 用 c1 表示顏色 1,c2 表示顏色 2,所有可能的塗色方案有:

方法1:

主要思路:

(1)使用動態規劃,對於當前的位置,如果和前乙個位置顏色一樣,則有dp[i-1]種,則要和更前面乙個不一樣,有 k-1 種,故總的有 dp[i-1](k-1)種;

(2)如果和更前乙個顏色一樣,則有 dp[i-2]種,則要和前面乙個顏色不一樣,則有 (k-1)種,則總的有 dp[i-2](k-1)種;

(3)故對於當前位置有 dp[i]=dp[i-1](k-1)+dp[i-2](k-1);

class

solution

if(n==1)

if(n==2)

//定義動態陣列

vector<

int>

dp(n+1,

0); dp[0]

=0; dp[1]

=k; dp[2]

=k*k;

for(

int i=

3;i<=n;

++i)

return dp[n]

;//返回結果}}

;

方法2:
class

solution

if(n==1)

int tmp=0;

int cur=k*k;

int pre=k;

for(

int i=

3;i<=n;

++i)

return cur;}}

;

276 柵欄塗色

當只有乙個柱子需要塗色時,有k種可塗色方案 當有兩個柱子需要塗色時,有k k 1 diff k same 種塗色方案 當有三個柱子需要塗色時,有 same diff k 1 diff diff same 種方案。1 class solution object 2def numways self,n,...

力扣276柵欄塗色

兩種動態規劃法 一 當前柵欄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開始 i...

LeetCode276 柵欄塗色

1.題目描述 有 k 種顏色的塗料和乙個包含 n 個柵欄柱的柵欄,每個柵欄柱可以用其中一種顏色進行上色。你需要給所有柵欄柱上色,並且保證其中相鄰的柵欄柱 最多連續兩個 顏色相同。然後,返回所有有效塗色的方案數。注意 n 和 k 均為非負的整數。示例 輸入 n 3,k 2 輸出 6 解析 用 c1 表...