打印大X

题目描述
小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。

要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)
要求输出一个大X

例如,用户输入:
3 9
程序应该输出:

.***…**.
.



…***.***…
.***…***.

再例如,用户输入:
4 21
程序应该输出

..










…********…






..

输入
输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)
输出
输出一个大X
样例输入
3 9
样例输出

.***…**.
.



…***.***…
.***…***.

这题就是找规律,暴力递归就出来了,先从左边开始打印,然后从右边开始打印,最后到中间可能会重复打印,不过也没差,也就是多跑几次。。这题的数据量不大

package javas.weleness.打印大x;

import java.util.Scanner;

public class Main {
	private static char icon = '*';

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int m = scanner.nextInt(), n = scanner.nextInt();
		char[][] map = new char[n][n+m-1];

		for (int i = 0; i < map.length; i++) {
			for (int j = 0; j < n+m-1; j++) {
				map[i][j] = '.';
			}
		}
		
		print(map, 0, n, m, 0);
		show(map,m,n);
	}
	private static void show(char[][] map,int m ,int n){
		for (int i = 0; i < map.length; i++) {
			for (int j = 0; j <n+m-1 ; j++) {
				System.out.print(map[i][j]);
			}System.out.println();
		}
	}
	private static void print(char[][] map,int start,int n ,int m , int count) {
		if(count == n) return;
		for (int i = start; i < m+start; i++) {
			map[start][i] = icon;
			map[n-1-start][i] = icon;
		}
		
		for (int i = n+m-1-start-1; i >= n-1-start; i--) {
			map[n-1-start][i] = icon;
			
			map[start][i] = icon;
		}
			
		print(map,start+1,n,m,++count);
	}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值