蓝桥杯基础试题---字母图形

蓝桥杯基础试题—字母图形题解(java)

问题描述

问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。

题解(两种方法)

方法一:

  通过观察发现,每个A的位置的行列差绝对值总为0,如第一次出现在0行0列abs(0 - 0)=0,第二次出现在1行1列abs(1 - 1)=0…每个B的位置的行列差绝对值总为1,如第一次出现在0行1列abs(0 - 1)=1,第二次出现在1行0列abs(1 - 0)=0…以此类推,C的绝对值为2,D的绝对值为3…Z的绝对值为25,即每个行列差绝对值对应的字母必然是相同的。所以题目要求等价为求每个位置的行列差的绝对值,然后加上基础A,就是我们需要的那个字母。此方法的具体时间复杂度为O(nm),代码如下:

public static void method01() {
    
    
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        for (int i = 0; i < n; i++) {
    
    
            for (int j = 0; j < m; j++) {
    
    
                char c = (char) (Math.abs(i - j) + 'A');
                System.out.print(c);
            }
            System.out.println();
        }
    }

方法二:

  按照题目要求,直接强行解题先将26个字母封装在一个字符数组中。然后利用另外一个字符数组通过列数m来截取我们需要的字母范围。再寻规律,每向下一行,去掉上一行的最后一个字符,加上上一行第一个字符的下一个字符,如A的下一个为B。这种方法的时间复杂度为O(n),代码如下:

    public static void method02() {
    
    
        int n, m;
        int index = 1;//指向字母数组的索引,用于第二行及以后的输出
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        m = sc.nextInt();
        char[] chars = {
    
    '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'};
        char[] s = new char[m];
        for (int i = 0; i < s.length; i++) {
    
    
            s[i] = chars[i];
        }
        String s1 = String.valueOf(s);//转换为字符串,后续按行输出
        System.out.println(s1);//输出第一行
        for (int i = 1; i < n; i++) {
    
    
        	//第一行之后的输出分为两部分:新增字母 + 原字符字串
            s1 = chars[index] + s1.substring(0, m-1);
            System.out.print(s1);
            index++;//索引加一,取到下一个字母
            System.out.println();
        }
    }

猜你喜欢

转载自blog.csdn.net/TreeCode/article/details/107925865
今日推荐