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

ค้นหาเทอมที่ n ของลำดับ Dragon Curve ใน C++


ที่นี่เราจะเห็นโปรแกรมที่สามารถหาเทอมที่ n ของลำดับ Dragon Curve ลำดับเส้นโค้งมังกรเป็นลำดับเลขฐานสองอนันต์ โดยเริ่มต้นด้วย 1 และในแต่ละขั้นตอน จะเพิ่ม 1 และ 0 ก่อนและหลังแต่ละองค์ประกอบของเทอมก่อนหน้า เพื่อสร้างเทอมถัดไป

  • ระยะที่ 1 :1
  • ระยะที่ 2 :110
  • ระยะที่ 3 :1101100
  • ระยะที่ 4 :110110011100100

เราจะเริ่มต้นด้วย 1 จากนั้นเพิ่ม 1 และ 0 หรือหลังจากแต่ละองค์ประกอบของเทอมก่อนหน้า เมื่อคำศัพท์ใหม่ที่ได้รับกลายเป็นคำศัพท์ปัจจุบัน ให้ทำซ้ำขั้นตอนตั้งแต่ 1 ถึง n เพื่อสร้างคำศัพท์ถัดไป

ตัวอย่าง

#include <iostream>
using namespace std;
string dragCurveTerm(int n) {
   string term = "1";
   for (int i = 2; i <= n; i++) {
      string temp = "1";
      char prev = '1', zero = '0', one = '1';
      for (int j = 0; j < term.length(); j++) {
         temp += term[j]; //take character from original string
         if (prev == '0') {
            temp += one;
            prev = one;
         } else {
            temp += zero;
            prev = zero;
         }
      }
      term = temp;
   }
   return term;
}
int main() {
   cout << "4th term of Dragon Curve Sequence: " << dragCurveTerm(4);
}

ผลลัพธ์

4th term of Dragon Curve Sequence: 110110011100100