CPU消耗 < 1000ms
方法一:
public static void main(String[] args){ Scanner sc=new Scanner(System.in); int m=sc.nextInt(); int n=sc.nextInt(); char[][] a=new char[n][m+n-1]; for(int i=0;i<n;i++){ for(int j=0;j<m+n-1;j++){ a[i][j]='.'; } } for(int i=0;i<n;i++){ for(int j=i;j<i+m;j++){ a[i][j]='*'; } } for(int i=0;i<n;i++){ for(int j=m+n-2-i;j>=n-1-i;j--){ a[i][j]='*'; } } for(int i=0;i<n;i++){ for(int j=0;j<m+n-1;j++){ System.out.print(a[i][j]); } System.out.println(); } }方法二: static Scanner scan=new Scanner(System.in); public static void main(String[] args){ Test3 test=new Test3(); test.start(); } String[] charArray; public void start(){ int a=scan.nextInt(); int b=scan.nextInt(); int[] a1=new int[a]; int[] b1=new int[a]; charArray=new String[b+a-1]; for(int i=0;i<a1.length;i++){ a1[i]=i; b1[i]=b-1+i; } recursion(a1,b1,a,0,b); } //a数组、b数组 //c是边界 public void recursion(int[] a,int[] b,int d,int c,int c1){ if(c==c1){ return; } for(int i=0;i<charArray.length;i++){ if((i>=a[0]&&i<=a[d-1])||(i<=b[d-1]&&i>=b[0])) charArray[i]="*"; else charArray[i]="."; } for(String i:charArray) System.out.print(i); System.out.println(); for(int i=0;i<a.length;i++){ a[i]++; b[i]--; } recursion(a,b,d,c+1,c1); }