问题描述:
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
资源限制:
时间限制:1.0s 内存限制:256.0MB
输入格式:
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式:
输出n行,每个m个字符,为你的图形。
样例输入:
5 7
样例输出:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定:
1 <= n, m <= 26。
分析:
这题就是一个找规律的题,先设一个char为65来表示A,接下来我们就可以通过对char的加减来实现字母的变化,我们再设一个外层循环来设定要打印的行数,然后这个外层循环内有两个内部循环,第一个内部循环是打印A之前的数的,比如第一行从A开始,这个内层循环就不需要打印,第二行A的前面有B,所以要输出B。第二个循环则是输出从A开始列数减第一个循环输出的个数。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int m=in.nextInt();
char A=65;
for(int c=0;c<n;c++) {
for(int h1=c,w=0;w<c&&w<m;h1--,w++) {
System.out.print((char)(A+h1));
}
for(int h=0;h<m-c;h++) {
System.out.print((char)(A+h));
}
System.out.println();
}
}
}
因为第一层循环的偏移量和列数的循环是相等的,也就是说输出第零行的时候偏移量也是零不用输出,当然也不能大于列数。