zoukankan      html  css  js  c++  java
  • 蓝桥杯 算法训练 ALGO-145 4-1打印下述图形

     算法训练 4-1打印下述图形  
    时间限制:1.0s   内存限制:256.0MB
    问题描述
      使用循环结构打印下述图形,打印行数n由用户输入。打印空格时使用"%s"格式,向printf函数传递只包含一个或多个空格的字符串" ",下同。
    样例输入
    一个满足题目要求的输入范例。
    例:

    5
    样例输出
    与上面的样例输入对应的输出。
    例:
    数据规模和约定
      输入数据中每一个数的范围。
      例:0<n<20。
     
    题目解析:
      本道题共两种思路,由于 n 的范围很小(0 < n <20),所以两种思路就运行时间、占用内存和复杂度并无优劣之分。
      (1)用循环语句分别控制行、每行开始的空格和每行的 *。
        比如,n = 3
                
              
                    表 1.1
        利用 i ( i 从 1 开始)来控制行,因此可以推出空格数 space 与 行数 n 和控制行变量 i 的关系: space = n - i ,* 数 asterisk 与控制行变量 i 的关系: asterisk = 2 * i - 1。
     
        (2)将图形存放在 String 类型的数组中,数组初始化为空。如图 1.1 所示,找出中心列号 center = n - 1,每 i 行都是在中心列的左右两边加 i 个 *,最后将数组输出即可。

    示例代码1:

     1 import java.util.Scanner;
     2 
     3 public class Main {
     4     public static void main(String[] args) {
     5         Scanner sc = new Scanner(System.in);
     6         int n = sc.nextInt();
     7         
     8         for(int i = 1; i <= n; i++){                //控制行
     9             for(int space = n-i ; space >= 1; space--){            //控制每行前边的空格
    10                 System.out.print(" ");
    11             }
    12             for(int asterisk = 1 ; asterisk <= 2 * i - 1; asterisk++){    //控制每行的 * 
    13                 System.out.print("*");
    14             }
    15             System.out.println();
    16         }
    17     }
    18 }

    示例代码2:

     1 import java.util.Scanner;
     2 
     3 public class Main {
     4 
     5     public static void main(String[] args) {
     6         Scanner sc = new Scanner(System.in);
     7         int n = sc.nextInt();
     8         
     9         String[][] triangle = new String[n][2*n-1];    //创建一个数组,初始化为空
    10         for(int i = 0; i < n; i++) {
    11             for(int j = 0; j < 2*n-1; j++) {
    12                 triangle[i][j] = " ";
    13             }
    14         }
    15         
    16         int center = n-1;    //中心列号
    17         for(int i = 0; i < n; i++) {        //控制行
    18             for(int j = 0; j <= i ; j++) {    //每行在中心左右两边增加 i 个 *
    19                 triangle[i][center-j] = "*";
    20                 triangle[i][center+j] = "*";
    21             }
    22         }
    23         //输出图形
    24         for(int i = 0; i < n; i++) {
    25             for(int j = 0; j < 2*n-1; j++) {
    26                 System.out.print(triangle[i][j]);
    27             }
    28             System.out.print("
    ");
    29         }
    30     }
    31 }

       

  • 相关阅读:
    Kafka项目实战-用户日志上报实时统计之编码实践
    MapReduce-深度剖析
    Word 页码设置教程:如何删除封面和目录的目录?
    Pytorch autograd,backward详解
    Pytorch Sampler详解
    Pytorch并行计算:nn.parallel.replicate, scatter, gather, parallel_apply
    论文笔记系列-Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation
    Pytorch: parameters(),children(),modules(),named_*区别
    Broadcast,Scatter,Gather,Reduce,All-reduce分别是什么?
    如何理解正定矩阵和半正定矩阵
  • 原文地址:https://www.cnblogs.com/cao-lei/p/6690167.html
Copyright © 2011-2022 走看看