描述
这个菱形大家熟悉吧。
*
***
*****
***
*
现在要求的是打印这样的菱形:不要*号,要最外层是字母A,然后里一层是B,再里一层是C···这样呢?
A
ABA
ABCBA
ABA
A
输入
第一行是一个正整数N(N≤25),代表有N组测试数据。
每一组数据包括一个正整数M(1≤M≤25),表示菱形的半径(直径就是M*2+1)。
输出
对于每组数据,输出要求打印的菱形。
样例输入
1
2
样例输出
A
ABA
ABCBA
ABA
A
方法一:
static Scanner scan=new Scanner(System.in); int dd; int isb; public static void main(String[] args){ Test02 test2=new Test02(); int a=scan.nextInt(); while(a>0){ test2.start(); a--; } } public void start(){ char c='A'; int a=1; int b=0; int d=scan.nextInt(); if((d+'A')>('A')&&(d+'A')<('Z'+1)){ recursion(a,b,c,d); isb=-1; dd=d; recursion(a+d-1,0,c,1); isb=0; } } public void recursion(int a,int b,char c,int d){ if(b==a&&a>0){ return; } int i=b; int g=0; while(i<a){ if(i==0){ for(int j=0;j<d;j++){ System.out.print(" "); } } int f=++i; if(g<2){ System.out.print(c); if(g<1){ recursion(a,f,(char)(c+1),d); } ++g; } } if(isb==0){ if(b==0){ System.out.println(); if(d>0){ a++; recursion(a,b,c,d-1); } } } if(isb==-1){ if(b==0){ System.out.println(); if(d<=dd){ a--; recursion(a,b,c,d+1); } } } }
方法二:
public static void main(String[] args){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); for(int b=0;b<n;b++){ int m=sc.nextInt(); int h=(2*m+1)/2; for(int i=0;i<=h;i++){ for(int j=h;j>i;j--){ System.out.print(" "); } for(int j=0;j<2*i+1;j++){ if(j<(2*i+1)/2+1) System.out.print((char)(65+j)); else System.out.print((char)(65+(2*i+1)-j-1)); } System.out.println(); } for(int i=h;i>0;i--){ for(int j=0;j<=h-i;j++){ System.out.print(" "); } for(int j=0;j<2*(i-1)+1;j++){ if(j<(2*(i-1)+1)/2+1) System.out.print((char)(65+j)); else System.out.print((char)(65+(2*(i-1))-j)); } System.out.println(); } } }