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

简介: 蓝桥杯 算法提高 输出正反三角形 (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();
  }
}
}


目录
相关文章
|
5天前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
6天前
|
搜索推荐 算法 Java
经典排序算法之-----选择排序(Java实现)
这篇文章通过Java代码示例详细解释了选择排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过选择排序对数组进行升序排列。
经典排序算法之-----选择排序(Java实现)
|
11天前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
27 6
|
6天前
|
搜索推荐 算法 Java
|
11天前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
29 2
|
11天前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
25 1
|
11天前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
22 1
|
4天前
|
算法 Java
HanLP — HMM隐马尔可夫模型 -- 维特比(Viterbi)算法 --示例代码 - Java
HanLP — HMM隐马尔可夫模型 -- 维特比(Viterbi)算法 --示例代码 - Java
9 0
|
6天前
|
搜索推荐 算法 Java
插入排序算法(Java代码实现)
这篇文章通过Java代码示例详细解释了插入排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过插入排序对数组进行升序排列。
|
11天前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
29 0