打印字符图形(蓝桥杯基础题 Java版)

问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
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();
        }


    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容