蓝桥杯 字母图形![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1e199e981ec025f83ad3230a2aa86fb6.png)
本可人儿的心理路程
- 思路一:
想的是到第i行就截第i-1行的一部分
比如第一行ABCDE
第二行就截第一行的ABCD,然后就第二行就是B;第二行就是BABCD
第三行就截第二行的BABC,然后就第三行就是C;以此类推
因为他规定的范围比较小,不用担心范围啥的
最后觉得好麻烦,写起来会很混乱
- 思路二
可以发现其实他是确定A的值,然后左右一直加1
A的位置就是第i行第i列
确定完A的位置,然后往左往右+1就行
代码如下:
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int m=scan.nextInt();
char ch[][]=new char[27][27];
char a=65;
for(int i=1;i<=n;i++)
{
for(int j=i;j<=m;j++)
{
ch[i][j]=a;
a++;
}
a=65;//记得从A开始
for(int j=i-1;j>=1;j--)
{
a++;
ch[i][j]=a;
}
a=65;//变为A
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
System.out.print(ch[i][j]);
}
System.out.println();
}
}
}
可能会遇到的问题:
想要灵活一点,定义的数组是这样的
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int m=scan.nextInt();
char ch[][]=new char[n][m];
这样写的话会报错,因为需要确定A的位置,当列m比行n小的时候,打印出来的图形是没有A的值的
这样会造成报错(数组越界)
所以定义的时候,直接用[27][27]就行啦!!!
输出如下: