LeetCode-276. 栅栏涂色
有 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. 栅栏涂色相关推荐
- Leetcode 276.栅栏涂色
Time: 20190904 Type: Easy 考察:动态规划 题目描述 有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏,每个栅栏柱可以用其中一种颜色进行上色. 你需要给所有栅栏柱上色,并且保 ...
- LeetCode 276. 栅栏涂色(DP)
文章目录 1. 题目 2. 解题 2.1 DP超时解 2.2 DP解 1. 题目 有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏,每个栅栏柱可以用其中一种颜色进行上色. 你需要给所有栅栏柱上色,并 ...
- LeetCode刷题实战276:栅栏涂色
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- leetcode276. 栅栏涂色
有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏,每个栅栏柱可以用其中一种颜色进行上色. 你需要给所有栅栏柱上色,并且保证其中相邻的栅栏柱 最多连续两个 颜色相同.然后,返回所有有效涂色的方案数. ...
- LeetCode 276:栅栏涂色
题目: 思路:动态规划 状态:即栅栏的索引位置和 是否与上一个同色, 两种状态: dp定义:dp[i][0] 指 第 i 个栅栏与第 i-1个栅栏同色的颜色可能性,dp[i][1]指第 i 个栅栏与上 ...
- LeetCode 1473. 给房子涂色 III(DP)
1. 题目 在一个小城市里,有 m 个房子排成一排,你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n ). 有的房子去年夏天已经涂过颜色了,所以这些房子不需要被重新涂色. 我们将连续相同颜 ...
- LeetCode 1411. 给 N x 3 网格图涂色的方案数(数学)
1. 题目 你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直边的格子颜色不同). 给你网格图的行数 n ...
- leetcode 5383. 给 N x 3 网格图涂色的方案数
leetcode 5383. 给 N x 3 网格图涂色的方案数 来源:力扣(LeetCode) 你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保 ...
- leetcode 给N x 3网络图涂色的方案数
1.题目详情 leetcode 给N x 3网络图涂色的方案数 你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就 ...
最新文章
- centos7通过yum升级内核到最新版本
- Python–新一代编程语言
- linux pci扫描链表,Linux Kernel ---- PCI Driver 分析
- java桥接和装饰_设计模式:桥接模式和装饰模式
- IT基础设施最佳实践ITIL
- datagrid页面获取表单一条数据的例子
- ROS入门_1.10 理解ROS服务和参数
- MVVM基本基础(2)
- java-io流入门
- 20170918-20170924C#工作学习周总结
- 零基础学FPGA(四):IP是什么东西(什么是软核,硬核)
- 那些油管上高质量的学习编程的频道 之二
- 共享单车安卓客户端app设计
- 运动用什么听歌好,推荐运动骨传导耳机
- [Springboot]发送邮件、重置密码业务实战
- java面试题总结-详细分类
- 计算机网络重要知识点
- python图片镜像翻转_python图像处理之镜像实现方法
- 记录一次使用Autowired报Nullpoint空指针异常的错误
- Nexus私服安装以及使用教程
热门文章
- 安装win7和Ubuntu双系统后,win7耳机没声音,外放有声音
- c语言减肥系统软件,给win7系统减减肥
- 不会用matplotlib画多子图?收好这2个套路
- Doves and bombs UVA - 10765
- Eclipse插件配置
- 64位 Eclipse IDE for Java EE Developers 下载地址
- linux 安装nodejs
- Adding items to hidden net GND
- 当电脑出现的验证码老是提示输入错误怎么办?
- 验证谷角猜想。日本数学家谷角静夫在研究自然数时发现了一个奇怪现象:对于任意一个自然数 n ,若 n 为偶数,则将其除以 2 ;若 n 为奇数,则将其乘以 3 ,然后再加 1。如此经过有限次运算后,总可