我们给了n个楼梯和2种颜色(红色和黄色),用于绘制这些楼梯。我们的任务是计算可以绘制楼梯的方式的数量,以使两个连续的步骤都不会变成黄色。
让我们举个例子来了解这个问题,
3
输出结果
5
The ways in which stairs can be painted are YRY, RYR, YRR, RRY, RRR. here R denotes red color, Y denotes yellow color.
为了解决这个问题,让我们看一下可以绘制楼梯的方式。
N = 1,方式(1)= 2:R,Y
N = 2,方式(2)= 3:RY,YR,RR
N = 3,ways(3)= 5:RYR,YRY,RRY,YRR,RRR
N = 4,ways(4)= 8:YRYR,RYRY,RYRR,YRRY,YRRR,RRYR,RRRR,RRUBY。
因此,从这些情况下,我们可以得出这是一个斐波那契数列,第一个元素为2,第二个元素为3。
用来说明我们逻辑运作方式的程序,
#include <iostream> using namespace std; int colorSteps(int n) { int first = 2; int next = 3; for (int i = 3; i <= n; i++) { next = first + next; first = next - first; } return next; } int main(){ int n = 6; cout<<"Number of ways to color "<<n<<" steps is "<<colorSteps(n); return 0; }
输出结果
Number of ways to color 6 steps is 21