有n个柱子,现在要给柱子染色,有k种颜色可以染,求有多少种染色方案

本文介绍了一种解决柱子染色问题的递推思路,给出递推公式D(n) = (k-1) * D(n-1) + (k-1) * D(n-2),其中n个柱子有k种颜色可以选择,且不允许超过两个相邻柱子颜色相同。通过分析不同情况,得出递推关系,并提供了Lintcode上的相关题目链接。
摘要由CSDN通过智能技术生成

一、思路

使用递推式

二、代码


这是 www.lintcode.com 上面的 第514道题

有n个柱子,现在要给柱子染色,有k种颜色可以染,求有多少种染色方案?

题目要求说,不存在超过2个相邻的柱子颜色相同

思路::::

 当 只有 1 个柱子的时候                k 种染色方案

当 有2 个柱子的时候                    k*k 中染色方案

当 有 3 个柱子的时候  分析如下

        情况一: 前两个柱子颜色相同,那么第三个柱子颜色必须与前两个不一样  

                    //      k种可能                               ( k-1) 种可能                   k * ( k-1 )                                                                 

        情况二:  前两个柱子颜色不同,那么第三个柱子颜色无所谓  因为题目中是不超过两个连续相同颜色,两个柱子颜色相同是被允许的。  

                      //      k*k  种可能                        ( k-1) 种可能                   k * k * (k-1)


所以  3 个柱子染色方案 是      k * ( k-1 )  + k * k * (k-1)

情况一,前两个柱子颜色相同 ,有 k 种可能  ,也就相当于  只有一个柱子

情况二,前两个柱子颜色不同, 有k*k 种可能ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值