蓝桥杯打印十字

import java.util.Scanner;

/*
 * 打印十字
 * 
 * 1 4 9  ((n-1)*2+4)*2+1
 * 2 6 13
 * 3 8 17
 * 
 * 
 * 考虑从左上角开始打印打印四分之一,然后进行复制
 * 
 * 
 * 充分利用图形的对称性,可以分离进行填充(若分离有规律的话),也可以一次性进行填充到一个数组中
 * 各个角度观察进行找规律
 * 放在一个数组中进行填充
 * 最后打印这个数组
 */
public class Main {

	public static void show(int n)
	{
		//中间行的下标
		int med = (n-1)*2+4;
		int len = ((n-1)*2+4)*2+1;
		int l = len - 1;
		//定义一个二维数组
		char a[][] = new char[len][len];
		int i = 0;//单独处理
		a[0][0] = a[0][1] = a[1][0] = a[1][1] =  '.';
		a[0][len-1] = a[0][len-2] = a[1][len-1] = a[1][len-2] = '.';//左右对称
		//上下对称
		a[l][0] = a[l][1] = a[l-1][0] = a[l-1][1] =  '.';
		a[l][len-1] = a[l][len-2] = a[l-1][len-1] = a[l-1][len-2] = '.';//左右对称
		for(int j = 2;j<=med;j++)
		{
			a[i][j] = a[j][i] = '$';
			a[i][l-j] = a[j][l-i] = '$';//左右对称
			
			//上下对称
			a[l-i][j] = a[l-j][i] = '$';
			a[l-i][l-j] = a[l-j][l-i] = '$';//左右对称
		}
		//直接按照规律打印
		for(i = 1;i<=med;i++)
		{
			if(i%2==1)//奇数的情况下
			{
				a[i][i] = '.';
				a[i][l-i] = '.';//左右对称
				a[i][i+1] = a[i+1][i] = '$';
				a[i][l-(i+1)] = a[i+1][l-i] = '$';//左右对称
				
				//上下对称
				a[l-i][i] = '.';
				a[l-i][l-i] = '.';//左右对称
				a[l-i][i+1] = a[l-i-1][i] = '$';
				a[l-i][l-(i+1)] = a[l-i-1][l-i] = '$';//左右对称
				
				for(int j = i+2;j<=med;j++)
				{
					a[i][j] = a[j][i] = '.';
					a[i][l-j] = a[j][l-i] = '.';//左右对称
					
					//上下对称
					a[l-i][j] = a[l-j][i] = '.';
					a[l-i][l-j] = a[l-j][l-i] = '.';//左右对称
				}
			}
			else
			{
				a[i][i] = '$';
				a[i][l-i] = '$';//左右对称
				
				a[i][i+1] = a[i+1][i] = '.';
				a[i][l-(i+1)] = a[i+1][l-i] = '.';//左右对称
				
				//上下对称
				a[l-i][i] = '$';
				a[l-i][l-i] = '$';//左右对称
				
				a[l-i][i+1] = a[l-i-1][i] = '.';
				a[l-i][l-(i+1)] = a[l-i-1][l-i] = '.';//左右对称
				for(int j = i+2;j<=med;j++)
				{
					a[i][j] = a[j][i] = '$';
					a[i][l-j] = a[j][l-i] = '$';//左右对称
					
					//上下对称
					a[l-i][j] = a[l-j][i] = '$';
					a[l-i][l-j] = a[l-j][l-i] = '$';//左右对称
				}
			}
		}
		
		
		//特殊点处理
		a[med][med-1] = a[med-1][med] = a[med+1][med] = a[med][med+1]='$';
		for(int r = 0;r<len;r++)
		{
			for(int c = 0;c<len;c++)
			{
				System.out.print(a[r][c]);
			}
			System.out.println();
		}
	}
	
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		show(in.nextInt());
	}

}


华love邵

期末大作业基于python的足球运动员数据分析源码+数据集(高分项目),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于pyth
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值