LintCode 柵欄染色

2021-07-15 01:41:24 字數 1290 閱讀 7529

lintcode:柵欄染色

lintcode表述有問題,原文是「必須保證任意兩個相鄰的柱子顏色不同」,應該表述為「至多有兩根相鄰的柱子具有相同的顏色」,此題使用動態規劃,狀態轉移方程為f(i)=f(i-1)*(k-1) + f(i-2)*(k-1),顯然f(0) = k, f(1) = k*k

方法一:

class

solution:

# @param n non-negative integer, n posts

# @param k non-negative integer, k colors

# @return an integer, the total number of ways

defnumways

(self, n, k):

# write your code here

if n == 1:

return k

if n == 2:

return k * k

if k <= 1:

return

0 ans = [0] * n

ans[0] = k

ans[1] = k * k

for i in range(2, n):

ans[i] = ans[i-1] * (k-1) + ans[i-2] * (k-1)

return ans[n-1]

class

solution:

# @param n non-negative integer, n posts

# @param k non-negative integer, k colors

# @return an integer, the total number of ways

defnumways

(self, n, k):

# write your code here

if n == 1:

return k

if n == 2:

return k * k

if k <= 1:

return

0 ans = [k, k*k]

for i in range(2, n):

tmp = ans[1]

ans[1] = (ans[0] + ans[1]) * (k-1)

ans[0] = tmp

return ans[1]

LintCode 柵欄染色

題目描述 我們有乙個柵欄,它有n個柱子,現在要給柱子染色,有k種顏色可以染。必須保證最多只有兩個相鄰的柱子顏色相同,求有多少種染色方案。樣例 n 3,k 2,return 6 post 1,post 2,post 3 way1 0 0 1 way2 0 1 0 way3 0 1 1 way4 1 0...

lintcode 柵欄染色

我們有乙個柵欄,它有n個柱子,現在要給柱子染色,有k種顏色可以染。必須保證不存在超過2個相鄰的柱子顏色相同,求有多少種染色方案。注意事項 n和k都是非負整數 您在真實的面試中是否遇到過這個題?yes 樣例n 3,k 2,return6 post 1,post 2,post 3 way1 0 0 1 ...

514 柵欄染色

3.28 這個題自己的錯誤,廢了很多時間。如果是單純地相鄰不許同色的話,應該就是這樣的 public static int numways1 int n,int k if k 1 n 2 int x int math.pow k 1,n 1 return x k 2 n 1 如果是不允許三根柱子相鄰...