日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lintcode-514-栅栏染色

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lintcode-514-栅栏染色 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

514-柵欄染色

我們有一個柵欄,它有n個柱子,現在要給柱子染色,有k種顏色可以染。
必須保證不存在超過2個相鄰的柱子顏色相同,求有多少種染色方案。

注意事項

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 0
way5 1 0 1
way6 1 1 0

標簽

動態規劃

思路

使用動態規劃,用一維數組 dp[i] 記錄前 i 個柱子的染色方案。染色時需要注意的是最多允許 2 顆相鄰的柱子具有相同的顏色。

  • 第 1 顆柱子染色方案為色彩總數 k,因為沒有相鄰的柱子
  • 第 2 顆柱子染色方案為色彩總數 k * k,因為只有 2 顆柱子,相鄰柱子顏色可以相同
  • 第 3 顆及其之后的柱子,染色方案為色彩總數 dp[i-2] * (k-1) + dp[i-1] * (k-1),因為若此柱子要染得顏色與上一顆柱子相同,則一定不能與上上顆相同;若與上一顆不同,則無需考慮其他柱子

code

class Solution { public:/** @param n: non-negative integer, n posts* @param k: non-negative integer, k colors* @return: an integer, the total number of ways*/int numWays(int n, int k) {// write your code hereif (n <= 0 || k <= 0) {return 0;}vector<int> dp(n + 1, 0);dp[1] = k;dp[2] = k * k;for (int i = 3; i <= n; i++) {dp[i] = dp[i - 1] * (k - 1) + dp[i - 2] * (k - 1);}return dp[n];} };

轉載于:https://www.cnblogs.com/libaoquan/p/7428868.html

總結

以上是生活随笔為你收集整理的lintcode-514-栅栏染色的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。