蓝桥杯 基础练习 FJ的字符串

试题 基础练习 FJ的字符串
题目链接

资源限制
时间限制:1.0s 内存限制:512.0MB


问题描述
  FJ在沙盘上写了这样一些字符串:
  A1 = “A”
  A2 = “ABA”
  A3 = “ABACABA”
  A4 = “ABACABADABACABA”
  … …
  你能找出其中的规律并写所有的数列AN吗?


输入格式
  仅有一个数:N ≤ 26。
输出格式
  请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。


样例输入
3
样例输出
ABACABA


思路解析:
有前几项就可以看出,后一项是前一项的所有字母加上对应的项数+65转字母然后加上前一项,因此这是一个递归的模式,所以可以使用递归进行实现。


实现代码:

import java.util.Scanner;

/**
 * @author Liaozicai
 */
public class Main
{
     
    static int index;
    static char[] chars;
    public static void main(String[] args)
    {
     
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        chars = new char[]{
     ' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
                'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
        StringBuilder str = cover(0, new StringBuilder(), N);
        System.out.println(str.toString());
    }
    static StringBuilder cover(int n, StringBuilder str1,int N){
     
        if (n == N){
     
            return str1;
        }
        if (N == 0){
     
            return str1.append(' ');
        }else {
     
            StringBuilder str2 = new StringBuilder(str1);
            str1.append(chars[n + 1]).append(str2);
        }
        cover(n + 1, str1, N);
        return str1;
    }
}

你可能感兴趣的:(蓝桥杯)