有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏,每个栅栏柱可以用其中一种颜色进行上色。

你需要给所有栅栏柱上色,并且保证其中相邻的栅栏柱 最多连续两个 颜色相同。然后,返回所有有效涂色的方案数。

注意:
n 和 k 均为非负的整数。

示例:

输入: n = 3,k = 2
输出: 6
解析: 用 c1 表示颜色 1,c2 表示颜色 2,所有可能的涂色方案有:

柱 1    柱 2   柱 3     
 -----      -----  -----  -----       
   1         c1     c1     c2
   2         c1     c2     c1
   3         c1     c2     c2
   4         c2     c1     c1  
   5         c2     c1     c2
   6         c2     c2     c1

用dp[n]来代表涂完前n个栅栏的解。

先分类讨论一下:

1. 如果当前栅栏跟前一个栅栏涂一样的颜色,可能性有 dp[n - 2] * ( k - 1)

2. 如果当前栅栏跟前一个栅栏涂不一样的颜色,可能性有 dp[n - 1)] * (k - 1)

所以 dp[n] = (dp[n - 2] + dp[n - 1] )* (k - 1)

class Solution(object):def numWays(self, n, k):""":type n: int:type k: int:rtype: int"""dp = [0] * (n + 3)dp[0], dp[1], dp[2] = 0, k, k * kfor i in range(3, n + 1):dp[i] = dp[i - 1] * (k - 1) + dp[i - 2] * (k - 1)return dp[n]

LeetCode-276. 栅栏涂色相关推荐

  1. Leetcode 276.栅栏涂色

    Time: 20190904 Type: Easy 考察:动态规划 题目描述 有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏,每个栅栏柱可以用其中一种颜色进行上色. 你需要给所有栅栏柱上色,并且保 ...

  2. LeetCode 276. 栅栏涂色(DP)

    文章目录 1. 题目 2. 解题 2.1 DP超时解 2.2 DP解 1. 题目 有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏,每个栅栏柱可以用其中一种颜色进行上色. 你需要给所有栅栏柱上色,并 ...

  3. ​LeetCode刷题实战276:栅栏涂色

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  4. leetcode276. 栅栏涂色

    有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏,每个栅栏柱可以用其中一种颜色进行上色. 你需要给所有栅栏柱上色,并且保证其中相邻的栅栏柱 最多连续两个 颜色相同.然后,返回所有有效涂色的方案数. ...

  5. LeetCode 276:栅栏涂色

    题目: 思路:动态规划 状态:即栅栏的索引位置和 是否与上一个同色, 两种状态: dp定义:dp[i][0] 指 第 i 个栅栏与第 i-1个栅栏同色的颜色可能性,dp[i][1]指第 i 个栅栏与上 ...

  6. LeetCode 1473. 给房子涂色 III(DP)

    1. 题目 在一个小城市里,有 m 个房子排成一排,你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n ). 有的房子去年夏天已经涂过颜色了,所以这些房子不需要被重新涂色. 我们将连续相同颜 ...

  7. LeetCode 1411. 给 N x 3 网格图涂色的方案数(数学)

    1. 题目 你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直边的格子颜色不同). 给你网格图的行数 n ...

  8. leetcode 5383. 给 N x 3 网格图涂色的方案数

    leetcode 5383. 给 N x 3 网格图涂色的方案数 来源:力扣(LeetCode) 你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保 ...

  9. leetcode 给N x 3网络图涂色的方案数

    1.题目详情       leetcode 给N x 3网络图涂色的方案数 你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就 ...

最新文章

  1. centos7通过yum升级内核到最新版本
  2. Python–新一代编程语言
  3. linux pci扫描链表,Linux Kernel ---- PCI Driver 分析
  4. java桥接和装饰_设计模式:桥接模式和装饰模式
  5. IT基础设施最佳实践ITIL
  6. datagrid页面获取表单一条数据的例子
  7. ROS入门_1.10 理解ROS服务和参数
  8. MVVM基本基础(2)
  9. java-io流入门
  10. 20170918-20170924C#工作学习周总结
  11. 零基础学FPGA(四):IP是什么东西(什么是软核,硬核)
  12. 那些油管上高质量的学习编程的频道 之二
  13. 共享单车安卓客户端app设计
  14. 运动用什么听歌好,推荐运动骨传导耳机
  15. [Springboot]发送邮件、重置密码业务实战
  16. java面试题总结-详细分类
  17. 计算机网络重要知识点
  18. python图片镜像翻转_python图像处理之镜像实现方法
  19. 记录一次使用Autowired报Nullpoint空指针异常的错误
  20. Nexus私服安装以及使用教程

热门文章

  1. 安装win7和Ubuntu双系统后,win7耳机没声音,外放有声音
  2. c语言减肥系统软件,给win7系统减减肥
  3. 不会用matplotlib画多子图?收好这2个套路
  4. Doves and bombs UVA - 10765
  5. Eclipse插件配置
  6. 64位 Eclipse IDE for Java EE Developers 下载地址
  7. linux 安装nodejs
  8. Adding items to hidden net GND
  9. 当电脑出现的验证码老是提示输入错误怎么办?
  10. 验证谷角猜想。日本数学家谷角静夫在研究自然数时发现了一个奇怪现象:对于任意一个自然数 n ,若 n 为偶数,则将其除以 2 ;若 n 为奇数,则将其乘以 3 ,然后再加 1。如此经过有限次运算后,总可