字串序列定義:
A1 = "A"
A2 = "ABA"
A3 = "ABACABA"
A4 = "ABACABADABACABA"
...
An = A(n-1) + char('A'+n-1) + A(n-1)
輸入 N (≤26),輸出 AN。N=20 時長度約 100 萬,N=26 時長度達 6700 萬,記憶體與時間壓力極大。
char ch[1500000],棧溢位風險。string s = "A";
for (int i = 2; i <= n; ++i) {
s = s + char('A' + i - 1) + s;
}
cout << s << endl;
std::string 自動管理記憶體,避免手動陣列。s.reserve((1<。 利用遞歸結構直接向標準輸出寫入,避免記憶體爆炸:
void printA(int n) {
if (n == 1) { cout << 'A'; return; }
printA(n-1);
cout << char('A' + n - 1);
printA(n-1);
}
ostringstream 或分塊 fwrite 加速。AN 中第 K 個字符(1-indexed)等於 'A' + __builtin_ctz(K)(K 的最低有效位位置)。可 O(1) 回答查詢,無需生成整串。
std::string 即可。reserve、移動語義、輸出緩衝。