居左


私信TA

用户名:JZ50

访问量:75723

签 名:

楼下你的分数已经再次被超越!!快刷!!

等  级
排  名 34
经  验 14145
参赛次数 2
文章发表 109
年  龄 0
在职情况 学生
学  校 99
专  业

  自我简介:

解题思路:





注意事项:





参考代码:

import java.util.Scanner;

public class C1442 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			F(sc.nextInt());
		}
		sc.close();
	}
	
	private static void F(int n){
		//共有(5+4*n)行, 上下以第(3+2*n)行为分割线对称, 求出前面(3+2*n)行即可打印完整图形
		int len = 3+2*n;
		char[][] a = new char[len][len];
		a[0][0] = '.';
		int k = 2*n + 1;
		for(int m = 1; m <= k; m+=2){
			a[m][m-1] = '.';
			a[m-1][m] = '.';
			a[m][m] = '.';
			for(int i = m+2; i <= k+1; i++){
				a[i][m] = '.';
				a[m][i] = '.';
			}
		}
		
		StringBuffer sb = new StringBuffer();
		for(int i = 0; i < len; i++){
			for(int j = 0; j < len; j++){
				if(a[i][j] != '.')
					a[i][j] = '$';
				sb.append(a[i][j]);
			}
			for(int j = len - 2; j >= 0; j--){
				sb.append(a[i][j]);
			}
			sb.append("\n");
		}
		for(int i = len-2; i >= 0; i--){
			for(int j = 0; j < len; j++){
				sb.append(a[i][j]);
			}
			for(int j = len - 2; j >= 0; j--){
				sb.append(a[i][j]);
			}
			sb.append("\n");
		}
		System.out.println(sb);
		
	}
}


 

0.0分

0 人评分

  评论区

  • «
  • »