一、思路
使用递推式
二、代码
这是 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 种可能ÿ