【发布时间】:2015-12-03 08:10:26
【问题描述】:
有 n 个帖子的栅栏,每个帖子都可以用 k 种颜色中的一种进行绘制。您必须绘制所有柱子,以使不超过两个相邻的栅栏柱具有相同的颜色。返回绘制栅栏的方法总数。
diff - 不同颜色的组合数,
same - 相同颜色的组合数,
n -帖子数,
k - 颜色数。
对于 n = 1:
diff = k;
same = 0;
对于 n = 2:
diff = k * (k - 1);
same = k;
对于 n = 3:
diff = (k + k * (k - 1)) * (k - 1);
same = k * (k - 1);
最后的公式是:
diff[i] = (diff[i - 1] + diff[i - 2]) * (k - 1);
same[i] = diff[i - 1];
我知道如何找到same[i],但我不知道如何找到diff[i]。你能解释一下diff[i] 的公式吗?
【问题讨论】:
标签: algorithm dynamic-programming combinatorics