用 Java 打印杨辉三角

本文涉及的产品
应用实时监控服务-用户体验监控,每月100OCU免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 用 Java 打印杨辉三角

用 Java 打印杨辉三角
13/100
发布文章
weixin_69252724
未选择文件

                          杨辉三角

image.png

杨辉三角的规律-->

  1. 每个数等于它上方两数之和。

    1. 每行数字左右对称,由1开始逐渐变大。
    2. 第 n 行的数字有 n 项
      为了更直观的用杨辉三角的上下行规律来操作,将他的一看成是上一行的0与1 相加,所以将0补上后更好求解,如图
      image.png

    1..由规律可以知道,如果要打印杨辉三角的n行,那么每行要有2n+1个元素
    **所以要创建一个n行2
    n+1个列的二维数组**
    2..由于杨辉三角第一行的上一行没有数字,所以第一行的1必须是给定的
    3.在根据规律a[ i ][ j ]的元素等于a[ i-1 ][ j-1 ]与a[ i-1 ][ j+1 ]的元素之和

代码演示

public class Homework {
   
   
    static Scanner sr = new Scanner(System.in);
    static int n = sr.nextInt();

    public static void main(String[] args) {
   
   
        int a[][] = new int[n][2 * n + 1];//根据用户的输入来确定二维数组的大小
        a[0][n] = 1;                      //确定第一行 1 的位置,因为第一行不能用上面的规律,第一行没有上一行
        for (int i = 1; i < a.length; i++) {
   
   //用总结的规律来给除了第一行的元素外赋值
            for (int j = 1; j < a[0].length - 1; j++) {
   
   //因为每行的,第一列和最后一列没有左边元素和右边的右边的元素所=所有不能取到
                a[i][j] = a[i - 1][j - 1] + a[i - 1][j + 1];
            }
        }

        //打印杨辉三角
        for (int i = 0; i < a.length; i++) {
   
   
            int count = 0;
            for (int j = 0; j < a[0].length; j++) {
   
   
                if (a[i][j] == 0) {
   
   
                    System.out.print(" \t"); //不打印0,但要有位置所以打印空格
                }
                else {
   
   
                    System.out.print(a[i][j]+"\t");//
                    count++;//因为要换行打印,构造计数器
                }
                if (count == i+1) {
   
   //因为每行只有对应行数的非零数,所以当等于行数时候换行
                    System.out.println();break;//!!!此处要注意加上break,不然就会有多余的空格打印出来
                                               //我之前就因为这个想了好久^_^
                }
            }
        }
    }
}

有不足或者需改进的地方欢迎大家私信指出 O(∩_∩)O
杨辉三角
在这里插入图片描述

杨辉三角的规律–>

每个数等于它上方两数之和。
每行数字左右对称,由1开始逐渐变大。
第 n 行的数字有 n 项
为了更直观的用杨辉三角的上下行规律来操作,将他的一看成是上一行的0与1 相加,所以将0补上后更好求解,如图
在这里插入图片描述
1…由规律可以知道,如果要打印杨辉三角的n行,那么每行要有2n+1个元素
所以要创建一个n行2n+1个列的二维数组
2…由于杨辉三角第一行的上一行没有数字,所以第一行的1必须是给定的
3.在根据规律a[ i ][ j ]的元素等于a[ i-1 ][ j-1 ]与a[ i-1 ][ j+1 ]的元素之和
代码演示
public class Homework {
static Scanner sr = new Scanner(System.in);
static int n = sr.nextInt();

public static void main(String[] args) {
    int a[][] = new int[n][2 * n + 1];//根据用户的输入来确定二维数组的大小
    a[0][n] = 1;                      //确定第一行 1 的位置,因为第一行不能用上面的规律,第一行没有上一行
    for (int i = 1; i < a.length; i++) {//用总结的规律来给除了第一行的元素外赋值
        for (int j = 1; j < a[0].length - 1; j++) {//因为每行的,第一列和最后一列没有左边元素和右边的右边的元素所=所有不能取到
            a[i][j] = a[i - 1][j - 1] + a[i - 1][j + 1];
        }
    }

    //打印杨辉三角
    for (int i = 0; i < a.length; i++) {
        int count = 0;
        for (int j = 0; j < a[0].length; j++) {
            if (a[i][j] == 0) {
                System.out.print(" \t"); //不打印0,但要有位置所以打印空格
            }
            else {
                System.out.print(a[i][j]+"\t");//
                count++;//因为要换行打印,构造计数器
            }
            if (count == i+1) {//因为每行只有对应行数的非零数,所以当等于行数时候换行
                System.out.println();break;//!!!此处要注意加上break,不然就会有多余的空格打印出来
                                           //我之前就因为这个想了好久^_^
            }
        }
    }
}

}
有不足或者需改进的地方欢迎大家私信指出 O(∩_∩)O

相关文章
|
5月前
|
Java
Java数组的2个小案例(杨辉三角分析和商品管理增删改查)
Java数组的2个小案例(杨辉三角分析和商品管理增删改查)
53 4
|
8月前
|
Java 容器
Java集合类ArrayList应用 | 二维数组的集合类表示与杨辉三角实现
这是一个关于LeetCode第118题“杨辉三角”的问题解答摘要。题目要求生成一个杨辉三角的前n行,其中每一行都是由前一行的元素按规则生成的。杨辉三角的规律是:每一行的第一个和最后一个数是1,其他数是其上方两数之和。
62 4
|
8月前
|
算法 C++ Java
Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和
Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和
64 0
|
8月前
|
Java
【Java每日一题】— —第二十题:杨辉三角(直角三角形)。
【Java每日一题】— —第二十题:杨辉三角(直角三角形)。
|
8月前
|
Java
【Java每日一题】— —第十七题:杨辉三角(等腰三角形)。
【Java每日一题】— —第十七题:杨辉三角(等腰三角形)。
|
8月前
|
Java
杨辉三角形(二维坐标基础题)——Java-二维数组版本
杨辉三角形(二维坐标基础题)——Java-二维数组版本
57 0
|
Java
Java实现杨辉三角
Java实现杨辉三角
113 0
|
人工智能 Java
蓝桥杯 基础练习 杨辉三角形(Java)
蓝桥杯 基础练习 杨辉三角形(Java)
120 0
|
机器学习/深度学习 Java
Java 打印 杨辉三角
Java 打印 杨辉三角
123 0
|
11天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者