在C ++中用两种颜色绘制楼梯以使相邻的两种颜色不是黄色的方法

我们给了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