蓝桥杯基础-007-Letter_Pattern_Row-Column

题意

样例输入
5 7
样例输出
ABCDEFG
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集神盾局带劲,嘿嘿。 “-> 【即:规律二】

欸 没事啦,当积累经验啊哈哈哈~~






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值