算法基础—字符图形

举报
顾问 发表于 2022/02/24 22:32:32 2022/02/24
【摘要】 问题描述       利用字母可以组成一些美丽的图形,下面给出了一个例子:             ABCDEFG             BABCDEF             CBABCDE             DCBABCD             EDCBABC       这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式       输入一行,包...
问题描述

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

             ABCDEFG

             BABCDEF

             CBABCDE

             DCBABCD

             EDCBABC

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

输入格式
       输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
       输出n行,每个m个字符,为你的图形。
样例输入
       5 7
样例输出
      ABCDEFG
      BABCDEF
      CBABCDE
      DCBABCD
      EDCBABC
      数据规模与约定
      1 <= n, m <= 26。
编码思路
       根据例子我们发现,每行字母变化的规律,每输出一行字母,那么它的的第一个字母就会增长一位,比如:第一行的第一位是A,那么第二行的第一位就是B。
然后其他的字母全部都往后移一位(包括变化前的第一位)。知道了规律我们就可以用代码将其实现,大致思虑就是用两个数组(这里用arr和aa代表)来代表变化前和变化后的一行字母,每次arr的第一位先增长一位并且把值给aa的第一位,然后从第二位开始aa接收arr数组也就是变化前的值,输出之后再将aa的值给arr然后再执行相同的操作即可。
代码实现
import java.util.Scanner;

public class lq_day4_7 {
//字母图形
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int x=sc.nextInt();
		int y=sc.nextInt();
		char[] arr=new char[y];
		//给数组一个初始值
		for (int i = 0; i < arr.length; i++) {
			arr[i]=(char)(65+i);
		}
		//循环输出每行字母
		for (int i = 0; i < x; i++) {
			//定义一个新数组来存储改变前的数组
			char[] aa=new char[y];
			aa[0]=(char)(65+i);
			if(i==0) {
				aa=arr;
			}else {
				for (int j = 1; j < y; j++) {
					aa[j]=arr[j-1];
				}
			}
			System.out.println(aa);
			//将改变后的数组给原数组
			arr=aa;
		}
		

	}

}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。