解题思路:首先通过观察,发现输入的数字n是几,就在将A+(n-1)做为分界线之前的一个字符串全复制一遍,放在分界线的后边。摸清规律之后,只需要每次做循环,一遍一遍的将前一个字符串做复制粘贴。
解题难点:就是要找出字符串的规律,不能盲目下手,它提示可以利用递归进行解题,因为循环便于理解,我就选择了自己的方案。其次,按照我的解题思路,如何找到数组中该存放分界线的位置显得尤为重要,只要找准位置,将前面所有的字符串完全照搬至后就可以完成。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanf = new Scanner(System.in);
int n = scanf.nextInt(); //输入范围
int[] arr = new int[2000]; //定义整形数组便于操作
arr[0] = 65; //设定初值
int j = 0;
for(int i = 1;i < n;i++ ) {
j = (int)Math.pow(2, i); //寻找分界线位置的下一个值(2的次方便于寻找)
int temp = j-1;
arr[temp] = 65+i; //设置分界线的数值
for(int k = 0;k < temp;k++,j++) //设置循环,搬运字符串
arr[j] = arr[k];
}
for(int i = 0;i < j;i++)
System.out.print((char)arr[i]);
}
}