杨辉三角形(二维坐标基础题)——Java-二维数组版本

举报
红目香薰 发表于 2023/01/23 17:02:58 2023/01/23
【摘要】 ​ ​编辑二维坐标基础题——杨辉三角形目录二维坐标基础题——杨辉三角形官网的杨辉三角说法:杨辉三角Java二维数组编码        二维坐标题目可以说是蓝桥杯的重中之重题目了,我们在力扣上这类题目我们可以搜索到上前道,并且如果有兴趣筛选一下蓝桥杯历届的题目,利用二维数组解题的占比那是大到一个不可想象的地步,这种题其实最好的解决方案就是:【纸笔绘图】,通过绘图我们可以在其中找寻到一定的规律,...

 编辑

二维坐标基础题——杨辉三角形


目录

二维坐标基础题——杨辉三角形

官网的杨辉三角说法:

杨辉三角Java二维数组编码




        二维坐标题目可以说是蓝桥杯的重中之重题目了,我们在力扣上这类题目我们可以搜索到上前道,并且如果有兴趣筛选一下蓝桥杯历届的题目,利用二维数组解题的占比那是大到一个不可想象的地步,这种题其实最好的解决方案就是:【纸笔绘图】,通过绘图我们可以在其中找寻到一定的规律,再根据规律总结公式进行操作;如果真没办法总结公式就算是暴力处理我们也能有一条出路,起码拿到20%~40%的分没问题,有的时候测试数据量不是很大,甚至能达到80%的地步,由此可见,二维坐标题目的重要性了。

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1

以上的输出过程我们总结一下:杨辉三角的两个腰边的数都是1,从第3行起,除第一个数和最后一个数外,其它位置的数都是上顶上两个数之和。

官网的杨辉三角说法:

杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623——1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。

编辑

我们看到从上向下的变量n顺序是以自然数的方式进行递增的,那么,我们根据这个顺序就能使用编程的方法输出出来。

杨辉三角Java二维数组编码

仅仅输出数字规律:

其实核心就是if判断语句,有两个逻辑:

逻辑1:如果i与j相等或上i==0||j==0,这种情况的输出值是1,我们直接赋值即可。

逻辑2:arr[i][j]的值等于数据上一层的的左侧-1数据加上正对着的上一层数据,

也就是【arr[i-1][j-1]+arr[i-1][j]】。

我们将这两个数据组合输出即可,这是咱们第一个数组坐标操作的题目。

package com.item.action;

public class Demo1 {

	public static void main(String[] args) {
		int n = 5;
		int[][] arr = new int[n][n];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				if (i == j || i == 0 || j == 0) {
					arr[i][j]=1;
				}else {
					arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
				}
			}
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}

}

编辑

我们来简单的打个补丁。 

package com.item.action;

public class Demo1 {

	public static void main(String[] args) {
		int n = 5;
		int[][] arr = new int[n][n];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				if (i == j || i == 0 || j == 0) {
					arr[i][j]=1;
				}else {
					arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
				}
			}
		}
		for (int i = 0; i < n; i++) {
			for (int k = n-1; k > i; k--) {
				System.out.print(" ");
			}
			for (int j = 0; j <= i; j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}

}

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。