问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
本题在把握了规律之后,就没有什么难度了。
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
思路:观察二维数组的结构,用下标i表示行,j表示列:
对于字母A满足规律i-j=0,例如array[0][0]=A,array[1][1]=A,array[2][3]=A,
字母B满足规律i-j=1或-1,例如array[1][0]=B,array[2][1]=B,array[0][1]=B,array[1][2]=B
同理,其他的都是这样的规律:
代码如下:
package hello.ant;
import java.util.Scanner;
public class AlogTuXing {
static char[] str={'A','B','C','D','E',
'F','G','H','I','J',
'K','L','M','N','O',
'P','Q','R','S','T',
'U','V','W','X','Y',
'Z'};
public static void main(String[] args) {
int n=5,m=7;//5行7列
Scanner scanner=new Scanner(System.in);
n=scanner.nextInt();
m=scanner.nextInt();
char array[][]=new char[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
int x=i-j;
if(x<0){
x=-1*x;
}
array[i][j]=str[x];
}
}
displayArray(array);
}
static void displayArray(char array[][]){
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
System.out.print(array[i][j]);
}
System.out.println();
}
}
}
本题在把握了规律之后,就没有什么难度了。
题目来源于http://blog.csdn.net/hymanxq/article/details/26019039