基础练习 字母图形
-
问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG 0-6 0123456
BABCDEF 1-5 1012345
CBABCDE 2-4 2101234
DCBABCD 3210123
EDCBABC 4321012
数据规模与约定
1 <= n, m <= 26。 -
思路分析:
首先要看出来这个题的规律,
如图所示,使用双层for循环,第一层决定行数,第二层决定列数。在红线的上方,行标小于列表,即i<j;在红线下方,行标大于列表,即i>j。最为很重要的有点是,你需要知道,后输出的数为它前面一列的数或者它上面一行的数加一。为什么这么说呢,因为for循环执行时,是按顺序的,它会首先输出a[0][0]=‘A’,这是必然的,当它一次往下执行时,会输出a[0][1],这个时候判断i和j的关系,前面的a[0][0]直到结果+1 就行了,当它执行到a[1][0]时前面一行的结果是知道的,在上面一行的结果基础上执行+1。 -
主要代码如下:
import java.util.Scanner;
public class BASIC_3 {
/**
* @param args
*/
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(),m=sc.nextInt();
int[][] array=new int[n][m];
if(n<1||n>26||m<1||m>26) return;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(i==j){
array[i][j]='A';
}
else if(i<j){
array[i][j]=array[i][j-1]+1;
}else if(i>j){
array[i][j]=array[i-1][j]+1;
}
System.out.print((char)array[i][j]);
}
System.out.println();
}
}
}
4.自我总结
刚开始的时候并没有使用二位数组,想的是多用几个if语句判读,结果没有弄出来,再接再厉吧。。