算法基础—字符图形
【摘要】 问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: 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
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)