蓝桥杯 基础练习 BASIC-3 字母图形

基础练习 字母图形

  1. 问题描述

    利用字母可以组成一些美丽的图形,下面给出了一个例子:

    ABCDEFG

    BABCDEF

    CBABCDE

    DCBABCD

    EDCBABC

    这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
    输入格式
    输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
    输出格式
    输出n行,每个m个字符,为你的图形。
    样例输入
    5 7
    样例输出
    ABCDEFG 0-6 0123456
    BABCDEF 1-5 1012345
    CBABCDE 2-4 2101234
    DCBABCD 3210123
    EDCBABC 4321012
    数据规模与约定
    1 <= n, m <= 26。

  2. 思路分析:
    首先要看出来这个题的规律,
    在这里插入图片描述如图所示,使用双层for循环,第一层决定行数,第二层决定列数。在红线的上方,行标小于列表,即i<j;在红线下方,行标大于列表,即i>j。最为很重要的有点是,你需要知道,后输出的数为它前面一列的数或者它上面一行的数加一。为什么这么说呢,因为for循环执行时,是按顺序的,它会首先输出a[0][0]=‘A’,这是必然的,当它一次往下执行时,会输出a[0][1],这个时候判断i和j的关系,前面的a[0][0]直到结果+1 就行了,当它执行到a[1][0]时前面一行的结果是知道的,在上面一行的结果基础上执行+1。

  3. 主要代码如下:

import java.util.Scanner;
public class BASIC_3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in);
		
		int n=sc.nextInt(),m=sc.nextInt();
		
		int[][] array=new int[n][m];
		
		
		if(n<1||n>26||m<1||m>26) return;
		
		for(int i=0;i<n;i++){
		
			for(int j=0;j<m;j++){
				
				if(i==j){
					array[i][j]='A';
				}
				else if(i<j){
					array[i][j]=array[i][j-1]+1;
				}else if(i>j){
					array[i][j]=array[i-1][j]+1;
				}
				System.out.print((char)array[i][j]);
			}
			System.out.println();
			
		}
		
		
		
	}

}

4.自我总结
刚开始的时候并没有使用二位数组,想的是多用几个if语句判读,结果没有弄出来,再接再厉吧。。

扫描二维码关注公众号,回复: 8649736 查看本文章
发布了8 篇原创文章 · 获赞 0 · 访问量 226

猜你喜欢

转载自blog.csdn.net/LilyS1/article/details/104010647