杨辉三角的实现(Java)
杨辉三角的实现
一、什么是杨辉三角
杨辉三角是二项式系数在三角形中的一种几何排列。每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大。第n行的数字有n项。前n行共[(1+n)n]/2 个数。
杨辉三角联系最紧密的是二项式乘方展开式的系数规律,即二项式定理。例如在杨辉三角中,第3行的三个数恰好对应着两数和的平方的展开式的每一项的系数,第4行的四个数恰好依次对应两数和的立方的展开式的每一项的系数,即(a+b)³=a³+3a²b+3ab²+b³,以此类推,杨辉三角是最常见的算法便是用上一行递推计算。
杨辉三角是中国古代数学的杰出研究成果之一,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。
二、代码实现
1.输出10行的杨辉三角
/*
* 1
* 11
* 121
* 1331
* ......
*/ public class YangHui
{
public static void main(String[] args)
{ int[][] YangHui=new int[10][];
for (int i=0;i<YangHui.length;i++)
{
YangHui[i]=new int[i+1];//建立二维数组,及行的元素个数 }
for (int i=0;i<YangHui.length;i++)
{
for (int j=0;j<YangHui[i].length;j++)
{
/*
j=0是二位数组第一个元素为0,i=j是在二位数组中最后一个元素
例:1 YangHui[0][0]
11 YangHui[1][0] YangHui[1][1]
121 YangHui[2][0] ... YangHui[2][2]
*/
if (j==0||i==j)
{
YangHui[i][j]=1;
//先给1行1列;2行1列,2行2列,3行1列,3行3列...赋值为1
}else
{
YangHui[i][j]=YangHui[i-1][j-1]+YangHui[i-1][j];
}//再对其他行列进行赋值计算
}
}
for (int i=0;i<YangHui.length;i++)
{
for (int m=10;m>i;m--)
{
System.out.print(" ");
}//,将直角三角形的杨辉三角转化成等边三角形的杨辉三角,空格和上层i联系外层i自增,内层m每行自减
for (int j=0;j<YangHui[i].length;j++)
{
System.out.print(YangHui[i][j]+" ");
//字符间间隔
}
System.out.println();
}
}
}
2输入行数再输出
/*
* 1
* 11
* 121
* 1331
* ......
*/ import java.util.Scanner; public class YangHui1
{
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
System.out.println("请输入需要输出几行的杨辉三角:");
int x=scanner.nextInt();
int[][] YangHui=new int[x][];
for (int i=0;i<YangHui.length;i++)
{
YangHui[i]=new int[i+1];//建立二维数组,及行的元素个数 }
for (int i=0;i<YangHui.length;i++)
{
for (int j=0;j<YangHui[i].length;j++)
{
/*
j=0是二位数组第一个元素为0,i=j是在二位数组中最后一个元素
例:1 YangHui[0][0]
11 YangHui[1][0] YangHui[1][1]
121 YangHui[2][0] ... YangHui[2][2]
*/
if (j==0||i==j)
{
YangHui[i][j]=1;
//先给1行1列;2行1列,2行2列,3行1列,3行3列...赋值为1
}else
{
YangHui[i][j]=YangHui[i-1][j-1]+YangHui[i-1][j];
}//再对其他行列进行赋值计算
}
}
for (int i=0;i<YangHui.length;i++)
{
for (int m=x;m>i;m--)
{
System.out.print(" ");
}//,将直角三角形的杨辉三角转化成等边三角形的杨辉三角,空格和上层i联系外层i自增,内层m每行自减
for (int j=0;j<YangHui[i].length;j++)
{
System.out.print(YangHui[i][j]+" ");
//字符间间隔
}
System.out.println();
}
}
}
三、大致实现过程
四、总结
实现杨辉三角主要使用了二维数组,利用外围数组控制行,内围数组控制列来实现,因为在实现过程中需要计算上一行的数值,所以在计算之前需要给每行第一个元素和最后一个元素赋值为1,这样就可以进行计算了。
杨辉三角的实现(Java)的更多相关文章
- Java的二维数组的应用及杨辉三角的编写
(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...
- 使用Java打印杨辉三角
package 杨辉三角; import java.util.Scanner; public class 三角 { private static Scanner scn; public static ...
- Java数组的应用:案例:杨辉三角,三维数组,字符串数组
//import java.util.Arrays; //包含Arrays //import java.util.Random; public class HelloWorld { public st ...
- Java实现杨辉三角
杨辉三角用了两种方法解决 二维数组/递归方法 +—————————————————————————— import java.util.Scanner; public class YangHui02 ...
- [Java练习题] -- 1. 使用java打印杨辉三角
package cn.fzm.demo1.array; import java.util.Scanner; /* * 需求:打印杨辉三角形(行数可以键盘录入) 1 1 1 1 2 1 1 3 3 1 ...
- Java之杨辉三角的实现
今天突然想温习一下Java的基础,想了想就写写杨辉三角吧 1.直接法,利用二维数组 import java.util.Scanner; public class Second { public sta ...
- 杨辉三角的打印(Java)
// //输入指定的行数,打印杨辉三角 // //每个数等于它上方两数之和. //每行数字左右对称,由1开始逐渐变大. //第n行的数字有n项. // // // //可从打印菱形的思想出发:???? ...
- java实现组合数_n!_杨辉三角_组合数递推公式_回文数_汉诺塔问题
一,使用计算机计算组合数 1,设计思想 (1)使用组合数公式利用n!来计算Cn^k=n!/k!(n-k)!用递推计算阶乘 (2)使用递推的方法用杨辉三角计算Cn+1^k=Cn^k-1+Cn^k 通过数 ...
- 1233: 输出杨辉三角前n行(Java)
WUSTOJ 1233: 输出杨辉三角前n行 题目 原题链接 Description 输出杨辉三角前n行. Input 输入一个数n(n <= 9) Output 输出杨辉三角前n行.(注意行末 ...
- 实验----Java的二维数组的应用及杨辉三角的编写
(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...
随机推荐
- linux下新建用户
新建用户的两种方式: 一步步创建 useradd -m user1 #-m 是建立家目录 passwd user1 #设置密码 usermod -a -G root user1 #加入管理员 chsh ...
- Ubuntu桌面消失
Ubuntu桌面消失 按Ctrl + Alt + F1, 切回文本模式, 输入用户名和密码登录. 重装桌面和unity: sudo apt-get update sudo apt-get instal ...
- element-ui dialog loading
element-ui dialog loading 指令方式 服务方式 v-loading 当使用指令方式时,全屏遮罩需要添加fullscreen修饰符(遮罩会插入至 body 上),此时若需要锁定屏 ...
- FTP 与 SSH 的安全性对比, 以及FTP,SSH,SFTP,SCP 的关系简单解析!
FTP 与 SSH 的安全性对比? ftP: http://baike.baidu.com/subview/369/6149695.htm TCP/IP协议中,FTP标准命令TCP端口号为21,Por ...
- css 命名冲突 & solution
css 命名冲突 & solution 类似这样,为了解决模块间可能存在的 css 命名冲突问题,需要单独提供给模块开发者一套模块开发环境:同时,文档上要有如何使用的规范说明. CSS 建议: ...
- nest cli bug
nest cli bug Error: Collection "@nestjs/schematics" cannot be resolved. Error: Collection ...
- Dart All In One
Dart All In One dart & flutter https://github.com/dart-lang https://github.com/dart-lang/sdk win ...
- python 相对路径和绝对路径的区别
一,Python中获得当前目录和上级目录 获取当前文件的路径: from os import path d = path.dirname(__file__) #返回当前文件所在的目录 # __file ...
- 使用PowerDesigner进行数据库设计并直接把设计好的表导出相应的建表语句
Power Designer:数据库表设计工具 PowerDesigner是Sybase公司的一款软件,使用它可以方便地对系统进行分析设计,他几乎包括了数据库模型设计的全过程.利用PowerDesig ...
- Maven 打包项目到私服 (deploy)
一.配置maven 在maven安装目录 /conf/setting.xml 中的servers下添加: 1 <servers> 2 <server> 3 <id> ...