资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
输入格式
仅有一个数:N ≤ 26。
输出格式
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
ABACABA
要点在于An=An-1+中间字符+An-1;
中间字符为新增的字符,如n=3,字符就为C,以此类推
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
char[] ch=new char[n]; //存储需要用到的字符
for(int i=0;i<n;i++) {
ch[i]=(char) (65+i);
}
String sbefore = ""; 左半部分字符串
StringBuffer safter=new StringBuffer(); //整段字符串
int pos=0;
while(pos<n) {
if(pos==0) { //pos=0时只有一个字符A
sbefore=String.valueOf(ch[pos]);
safter.append(sbefore);
pos++;
}
else {
safter.append(ch[pos]); //ch[pos]为中间字符
safter.append(sbefore); //再加上右半部分字符串
sbefore=safter.toString();
pos++;
}
}
// if(n==1)safter.append(sbefore);
System.out.print(safter);
}
}