题目不太合理

0 基础练习 字母图形

问题描述:

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

ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC

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

输入格式:

输入一行,包含两个整数 n 和 m,分别表示你要输出的图形的行数的列数。

输出格式:

输出 n 行,每个 m 个字符,为你的图形。

样例输入:

5 7

样例输出:

ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC

数据规模与约定:

1 <= n, m <= 26。

1 做题思路 & 注意事项

一开始的思路是获取 n 和 m 的值,然后根据这两个的值来创建二维数组,提交了之后发现不对,试了好多次,发现有人说数组直接定死 26 就可以通过了,试了一下,正解。(题目不太合理)

其实是有规律的,只看 A 的位置,都是在 [0][0],[1][1],[2][2] 这样的位置,往前往后都是 +1。所以先把 A 的位置定下来,然后往前的依次 +1,往后的也依次 +1。

处理好之后输出。

2 参考代码(Java)

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();  //整数 n,行
        int m = sc.nextInt();  //整数 m,列
        char[][] a = new char[26][26]; //char 型二维数组

        for(int i=0;i<n;i++) {
        	char str='A';
        	for(int j=i;j<m;j++) {  //往后
        		a[i][j]=str++;
        	}
        	str='A';
        	for(int j=i-1;j>=0;j--) {  //往前
        		a[i][j] = ++str;
        	}
        }

        for(int i=0;i<n;i++) {
        	for(int j=0;j<m;j++) {
        		System.out.print(a[i][j]);  //输出
        	}
        	System.out.println();  //换行
        }
    }
}