题意:给排成一列的N个方块染色,可选颜色为红蓝绿黄,求被染的红色方块与绿色方块同为偶数的方案数。
分析:设染至第i个方块时,红绿皆为偶数的方案数为a(i), 恰有一为奇数的方案数为b(i), 都是奇数的方案数为c(i), 则染至第i+1个方块时,有如下递推关系:
a(i+1) = 2*a(i) + b(i) + 0*c(i)
b(i+1) = 2*a(i) + 2*b(i) + 2*c(i)
c(i+1) = 0*a(i) + b(i) + 2*c(i)
由上可得如下矩阵关系:
(a(i+1), b(i+1), c(i+1)) = ((2, 1, 0), (2, 2, 2), (0, 1, 2))* ((a(i), b(i), c(i)))
由于当i = 0时,有a(0) = 1, b(0) = 0, c(0) = 0
令A = ((2, 1, 0), (2, 2, 2), (0, 1 2))
则:((a(n), b(n), c(n)))= A^n * ((1, 0, 0)).
核心代码间斐波那契数列求解。
原文:http://www.cnblogs.com/aizi/p/4662798.html