题目描述: FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
输入 输入描述:
仅有一个数:N ≤ 26。
输出 输出描述:
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
输入样例 1
3 输出样例 1
ABACABA
解题思路: 根据给出的字符串,可以得出规律: 1)字符串 AN 的长度为 (2^N) - 1 个。(使用一个字符数组储存)。 2)字符的排列顺序为:按照字母表顺序,从字符 ‘A’ 开始拿出 N 个字符,依次将字符放入字符数组中间隔的空位中(字符数组中的所有元素初始为空)。
通关代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int LEN = pow(2, n) - 1;
char arr[LEN];
for (int i = 0; i < LEN; i++) {
arr[i] = '0';
}
for (int i = 0; i < n; i++) {
int count = -1;
for (int j = 0; j < LEN; j++) {
if (arr[j] != '0') continue;
count++;
if (count == 0 || count % 2 == 0) {
arr[j] = ('A' + i);
}
}
}
for (int i = 0; i < LEN; i++) {
cout << arr[i];
}
return 0;
}