ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
从给的示例来看,推测是一个对称数组,截取四行四列,发现确实是一个对称数列。
A B C D
B A B C
C B A B
D C B A
题目给出行和列的范围是1~26,因此有了这样的思路。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 行
int n = scanner.nextInt();
// 列
int m = scanner.nextInt();
String string = "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";
// 用于后移,给对称数组的每一行进行赋值
String []strings = string.split(" ");
// 用于给strings 的strings[0]赋值
String []strings1 = string.split(" ");
// 数组最大为26*26的数组,我们求出该数组,最后根据输入的行和列截取即可
String[][]strs = new String[26][26];
// strs的第一行,第一行不改变,直接将strings的值付给。
for (int i = 0; i < strs.length; i++) {
strs[0][i] = strings[i];
}
// 接下来的25行,每一行都会改变,控制后移执行n-1次,即25次
for (int i = 1; i < strs.length; i++) {
// 控制后移一次
for (int j = strings.length-1; j >= 1; j--) {
strings[j] = strings[j-1];
}
strings[0]=strings1[i];
// 后移后,给strs赋值
for (int j = 0; j < strs.length; j++) {
strs[i][j] = strings[j];
}
}
//根据需要截取输出
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
//这里字母与字母之间不能加空格,否则不符合题目的输出规则
System.out.print(strs[i][j]);
}
//打印完一行就换行
System.out.println();
}
}
}