题意
BABCDEF
CBABCDE
DCBABCD
EDCBABC
找规律
规律一
1. 列+行-1大小的一维数组 + 行 个一维数组 + 对列整体进行平移sub_row个单位
2.左下角与右上方对称(I.row+row-column -> 情况2下越界;II.row <-> column 情况1 2通用)
3.截取输出 linesum*lettersum的矩阵
情况1)row<column
情况2)row>=column
规律一代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
char[] Alphabet = new char[26];
int letter = (int)'A';
for(int i = 0;i < 26;i++,letter++){
Alphabet[i] = (char)letter;
}
Scanner keyin = new Scanner(System.in);
int linesnum = keyin.nextInt();
int letternum = keyin.nextInt();
char[][] AlphabetOut = new char[linesnum][letternum+linesnum-1];
for(int row = 0;row < linesnum;row++){
for (int cnt_column = 0; row+cnt_column < AlphabetOut[0].length; cnt_column++) {
AlphabetOut[row][row+cnt_column] = Alphabet[cnt_column%letternum];
}
}
for (int row = 1; row < AlphabetOut.length; row++) {
for (int column = 0; column < row; column++) {
AlphabetOut[row][column] = AlphabetOut[column][row];
}
}
for (int i = 0; i < AlphabetOut.length; i++) {
for (int j = 0; j < letternum; j++) {
System.out.print(AlphabetOut[i][j]);
}
System.out.println("");
}
}
}
规律二(标答规律)
1.26*26初始化
1)思路一
i)思路同规律一中,下一行 'A' 起始sub平移row个单位 -> Alphabet[row][row+cnt_column]=(char)((int)'A'+column) && row+cnt_column<26
ii).思路同规律一中对称II -> row <-> column
规律二代码1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
char[][] Alphabet = new char[26][26];
for (int row = 0; row < Alphabet.length; row++) {
for (int cnt_column = 0; row+cnt_column < Alphabet[0].length; cnt_column++) {
Alphabet[row][row+cnt_column] = (char)((int)'A'+cnt_column);
}
}
for (int row = 0; row < Alphabet.length; row++) {
for (int column = 0; column < Alphabet[0].length; column++) {
System.out.print(Alphabet[row][column]);
}
System.out.println("");
}
for (int row = 0; row < Alphabet.length; row++) {
for (int column = 0; column < row; column++) {
Alphabet[row][column] = Alphabet[column][row];
}
}
Scanner keyin = new Scanner(System.in);
int row_sum = keyin.nextInt();
int column_sum = keyin.nextInt();
for (int row = 0; row < row_sum; row++) {
for (int column = 0; column < column_sum; column++) {
System.out.print(Alphabet[row][column]);
}
System.out.println("");
}
}
}
2)思路二
->下标规律
规律二代码2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner keyin = new Scanner(System.in);
int row = keyin.nextInt();
int column = keyin.nextInt();
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
System.out.print((char)((int)'A'+Math.abs(i-j)));
}
System.out.println("");
}
}
}
3)思路三
->先向右 "赋值++" ,再向左 "++赋值"
i)外循环(行)
ii)两个内循环
-1>边 列sub+1 (),边 'A'++
-2>边 行sub-1('A'左移),边++'A' (即先++再赋值)
历程
一看到这题
还以为是 -(>数组循环右移 ?
欸,搞了半天发现没那么难-(>数组循环赋值+row column对称(column<row时) ?
最后得了个70分
什么鬼,,
只考虑了row < column 的情况 -(1>只对每行先赋了lettersum个值然后右移
然后导致越界(对称I搞的鬼)-(2>换 对称II ->直接row column对调啊 不就行了
没系,再来(ง •_•)ง
木有错了啊。->【即:规律一】
还是 70分
”怎么可以这么简单;一个找规律……搞得我……(但是我还是……打死不看参考答案,话说,你们Code的怎么全都差不多)明天早上起来更blog,更blog可比一晚上刷完6集神盾局带劲,嘿嘿。 “-> 【即:规律二】
欸 没事啦,当积累经验啊哈哈哈~~