Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

วิธีทาสีบันไดสองสีให้สองข้างติดกันไม่เป็นสีเหลืองในภาษา 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 วิธี (3) =5 :RYR, YRY, RRY, YRR, RRR

N =4 วิธี (4) =8 :YRYR, RYRY, RYRR, YRRY, YRRR, RRYR, RRRR, RRRY

จากกรณีเหล่านี้ เราสามารถสรุปได้ว่านี่คืออนุกรมฟีโบนักชีที่เริ่มต้นด้วย 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