试题 基础练习 FJ的字符串
-
资源限制
时间限制:1.0s 内存限制:512.0MB
-
问题描述
FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
-
输入格式
仅有一个数:N ≤ 26。
-
输出格式
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
-
样例输入
3
-
样例输出
ABACABA
-
方法一:递归函数求解;
-
思路:
看到这种有规律的字符串或者数字,首先我们想到的是用递归的方法求解;但要注意递归的方法不适用于递归数目很多的地方,对于此处N <= 26还是可以接受的。
-
代码如下:
string FJ(int n,string res){
if (n == 1)
return "A";
return FJ(n - 1, res) + res[n - 1] + FJ(n - 1, res);
}
int main(){
int n;
cin >> n;
char res[MAX];
for (int i = 0; i < n; i++)
res[i] = char(i + 65);
cout << FJ(n, res) << endl;
return 0;
}
方法二:步步为营;
-
代码如下:
int n;
cin >> n;
string res[MAX];
for (int i = 0; i < n; i++)
res[i] = char(i + 65);
string s = "A";
for (int i = 1; i < n; i++){
s += s;
s.insert(s.length()/2,res[i]);
}
cout << s << endl;
return 0;