在 C++ 中查找 Dragon Curve 序列的第 n 项

c++server side programmingprogramming

这里我们将看到一个程序,它可以查找 Dragon Curve 序列的第 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 << "龙曲线序列第 4 项:" << dragCurveTerm(4);
}

输出

龙曲线序列第 4 项:110110011100100

相关文章