您的位置:首页 > 其它

蓝桥杯 之 基础练习3:字母图形

2015-01-28 21:46 369 查看
/*
问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。

样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

数据规模与约定
1 <= n, m <= 26。
*/

心得:

  一直以来作各种算法题,图形输出题貌似一直都是我的弱项,做这道题的时候也着实费了我好大劲。一开始没有好好注意观察图形的规律,导致做题时很伤脑筋。做这种图形输出题做多了些,就会发现做这类题就得要看图找规律,根据规律来写代码。像这道题的规律,它的第一行是按ABCDEFG..的顺序展开,第一列也是这样。而第i行的第i位后自左向右的字母也是按ABCDEF...展开的(i=1,2...,26),而第i行第i位前自右向左也是按ABCDEF...展开的。根据这个规律就可以写代码了。

  另外,在这道题中,我第一次在蓝桥杯练习系统上提交的代码,是将char二维数组的数组长度取决于我输入的两个数字,我在eclipse运行是可以运行成功的,但是在练习系统上提交代码后是显示运行错误。前几次在刷蓝桥杯练习系统的题目时,涉及到数组问题时也会出现这个问题,几番试验后我便发现,因为题目中有规定数据规模和约定,所以涉及到数组长度时,应该以题目中所给的数据规模与约定为准。

import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
char str;
//char[][] pattern=new char
[m];      //会出现运行错误
char[][] pattern=new char[26][26];
int i=0,j=0;
for(i = 0;i < n;i++)
{
str = 'A';
for(j = i;j  < m;j++)        //此处两个循环用来控制存储字符的
{
pattern[i][j] = str++;
}
str = 'A';
for(j = i - 1;j >= 0;j --)
{
pattern[i][j] = ++str;
}
}

for(i = 0;i < n;i ++)    //此处用来输出字符数组元素
{
for(j = 0;j < m;j ++)
{
System.out.print(pattern[i][j]);
}
System.out.println("");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: