用 Java 打印杨辉三角

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 用 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-二维数组版本
杨辉三角形(二维坐标基础题)——Java-二维数组版本
22 0
|
5天前
|
算法 C++ Java
Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和
Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和
32 0
Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和
|
11月前
|
Java
Java实现杨辉三角
Java实现杨辉三角
70 0
|
11月前
|
人工智能 Java
蓝桥杯 基础练习 杨辉三角形(Java)
蓝桥杯 基础练习 杨辉三角形(Java)
79 0
|
机器学习/深度学习 Java
Java 打印 杨辉三角
Java 打印 杨辉三角
91 0
|
Java C++ Python
蓝桥杯官网 试题 PREV-284 历届真题 杨辉三角形【第十二届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法
蓝桥杯官网 试题 PREV-284 历届真题 杨辉三角形【第十二届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法
402 0
蓝桥杯官网 试题 PREV-284 历届真题 杨辉三角形【第十二届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法
|
算法 Java
【leetcode刷题】34.杨辉三角——Java版
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐ 帕斯卡可能是马可波罗的亲戚,马可波罗回到欧洲后,把杨辉三角告诉了帕斯卡,最后帕斯卡漂亮了抄袭了杨辉三角 ——leetcode此题热评
118 0
【leetcode刷题】34.杨辉三角——Java版
|
Java 算法 API
Java知识详细巩固_note2(数组_附demo code_其一为杨辉三角简析)
继 Java基础知识的全面巩固_note1(附各种demo code)拜读《核心技术卷》,笔记之。 提纲 1.1 for each循环1.2 数组初始化以及匿名数组1.
1095 0
|
算法 Java 存储
leetcode算法题解(Java版)-4-动态规划(杨辉三角问题)
肯定是低价买,高价卖出。但是有个限制就是在买进的时候,必须卖出手上的股票。 最低价买,最高价的时候卖。在递增数列中,末项减首项=每项与后一项之差的和。这里不需要考虑交易次数最小,所以可以这么写
8469 0
|
人工智能 算法 Java
Java数组的应用:案例:杨辉三角,三维数组,字符串数组
//import java.util.Arrays; //包含Arrays //import java.util.Random; public class HelloWorld { public static void main(String[] args){ // Scanner s = new Scanner(System.
912 0