网站首页 > 精选教程 正文
问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
输入格式
输入包含一个数n。
输出格式
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
样例输入
4
样例输出
1
1 1
1 2 1
1 3 3 1
数据规模与约定
1 <= n <= 34。
=================================
解题思路:
①:读完题目,看到需要打印行列,果断使用二维数组,创建二维数组triangleArray。
②:我们可以发现规律,杨辉三角形的第一列和最后一列都是一,所以第一步就是把第一列和最后一列的数1打印出来。
③:第二个规律,第一、二行都是1可以用步骤②解决,从第三行开始发现,除去第一列和最后一列,中间的数triangleArray[n][n]等于triangleArray[n-1][n]+triangleArray[n-1][n-1],即等于次位置上方的数加上左前方的数。
④:第三个规律,第几行,就有几列,所以我们在输出时就不能输出二维数组中无用的数。
思路分析完毕,代码演示:
import java.util.Scanner;
public class YangHuiTriangle {
public static void main(String[] args) {
//创建一个扫描对象
Scanner sc = new Scanner(System.in);
//接收控制台输入的数,表示打印几行杨辉三角
int n = sc.nextInt();
//创建一个二维数组
int[][] triangleArray = new int[n][n];
//第1列和第n+1列的数为1
for(int i = 0; i < n; i++) {
triangleArray[i][0] = 1; //第一列为1
}
for(int j = 0; j < n; j++) {
triangleArray[j][j] = 1;
}
//完成中间的数的赋值
for(int i = 2; i < triangleArray.length; i++) {
for(int j = 1; j < triangleArray[i].length; j++) {
triangleArray[i][j] = triangleArray[i-1][j] + triangleArray[i-1][j-1];
}
}
//打印二维数组中不为0的数
for(int i = 0; i < triangleArray.length; i++) {
for(int j = 0; j < triangleArray[i].length; j++) {
if(triangleArray[i][j] != 0 ) {
System.out.print(triangleArray[i][j] + " "); //不换行
}
}
System.out.println(); //换行
}
sc.close();
}
}
================================
之后还会继续分享Java练习题和一些重难点,后期会录制视频讲解,初来乍到,关注一下吧
- 上一篇: java数据结构与算法之归并排序
- 下一篇: 八种经典排序算法总结,妈妈再也不用担心我不会了
猜你喜欢
- 2024-11-28 JAVA数据结构和算法-简单排序之选择排序
- 2024-11-28 面试官问我Arrays.sort()为什么可以对int等数组进行排序
- 2024-11-28 Java几种排序方式
- 2024-11-28 动力节点教学:多维数组用法
- 2024-11-28 「剑指offer题解」二维数组中的查找
- 2024-11-28 2021-09-26:搜索旋转排序数组。整数数组 nums 按升序排列,数组中
- 2024-11-28 java 数组动态接收和冒泡排序
- 2024-11-28 嵌入式C语言基础编程——5年程序员给你讲解字符数组,精品干货
- 2024-11-28 开发人员是如何使用Java进行排序?
- 2024-11-28 100个Java工具类之13:实现数组和集合排序的多种方法
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)