蓝桥杯 算法提高 输出正反三角形 (Java)

使用循环结构打印下述图形,打印行数n由用户输入。图中每行事实上包括两部分,中间间隔空格字符数m也由用户输入。

样例输入n,m:

5 4

样例输出:

	*    *********
   ***    *******
  *****    *****
 *******    ***
*********    *

注意:两行之间没有空行。

看到这个题,我这个人就比较懒,不想去打印三角形,就把他们直接看作一个矩形,然后我们把这个里面的空格打出来不就行了,建立一个二维数组,全部赋值为“ * ” ,然后我们把空格处都和原来的一替换,然后打印这个二维数组就行了

我们要严格的进行打印要和人家一样,要不然是0分哦!!!

矩形的行已经知道了,我们得算出列,根据它给出的输出,我们可以推出二维数组的列为((n*2-1)+n+m)
然后它两边的空格是 n-2 然后每行每次在减1,中间的空格我们就每次打印m个,然后每次向右边挪一下就行,
代码如下:

package 算法提高;

import java.util.Scanner;

public class Test88_01 {
public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in);
	int n = scanner.nextInt();
	int m = scanner.nextInt();
	int y=n-2;
	int z=(n*2-1)+m+n;
	int[][] a = new int[n][z];
	//全部初始化为“ * ”
	for (int i = 0; i < n ; i++) {
		for (int j = 0; j < z; j++) {
			a[i][j]='*';
		}
	}
	//打印左上的空格,从最小往最大行打印
	for (int i = 0; i < n; i++,y--) {
		for (int j =y; j>=0; j--) {
			a[i][j]=' ';
		}
	}
	//打印右下的空格,从最大往最下行打印
	y = n-2;//因为我们上面打印的时候y已经是-1,所以我们在这里重新赋值
	for (int i = n-1; i >= 0; i--,y--) {
		for (int j =z-1-y; j<z ; j++) {
			a[i][j]=' ';
		}
	}
	//打印中件的空格,每次都根据行来加,就实现了每次向右移一格
	for (int i = 0; i < n; i++) {
		for (int j = n; j <n+m ; j++) {
			a[i][i+j]=' ';
		}
	}
	//输出这个二维数组
	for (int i = 0; i < n ; i++) {
		for (int j = 0; j < z; j++) {
			//因为int和char,是可以转换的,所以我们建立的int型数组是可以打印的
			System.out.printf("%c",a[i][j]);
		}
		System.out.println();
	}
}
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值