问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* Created by junyi.pc on 2017/1/25.
*/
public class Main {
public static void main(java.lang.String[] args){
System.out.println("ABCDEFG\n" +
"BABCDEF\n" +
"CBABCDE\n" +
"DCBABCD\n" +
"EDCBABC");
//关键在于你得发现相邻两行对应的字符总是差一,比如第一行第一个是A,所以第二行第一个就是B
BufferedReader Reader=new BufferedReader(new InputStreamReader(System.in));
try {
String s=Reader.readLine();
String st[]=s.split(" ");
int time=0;
int timeMax=Integer.parseInt(st[0]);
int len=Integer.parseInt(st[1]);
char []c =new char[len];
for(int i=0;i<c.length;i++){
c[i]=(char)('B'+i);
//初始化c[]为BCDEFGH
}
for(int k=0;k<timeMax;k++){ //timeMax为5行
for(int j=0;j<c.length;j++){//length为7,表示7个字符
if(j<time){
c[j]=(char)(c[j]+1);//在这种情况下,左边的所有字符都比上一行对应的字符要大一
}
if(j>=time){
c[j]=(char)(c[j]-1);//在这种情况下,右边的所有字符都比上一行对应的字符要小一
}
}
time++;
System.out.println(c);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
网友评论