杨辉三角形算法(java实现)
来源:互联网 发布:gas mask for mac 编辑:程序博客网 时间:2024/05/14 07:53
杨辉三角形实现:
一、杨辉三角形特点:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
....
如上,就是一个6行的杨辉三角形。
特点如下:
1.每一行的第一个元素和最后一个元素都是1
2.第n行的元素是n个
3.每一行除首尾元素外,任一元素满足:[i][j]=[i-1][j-1]+[i-1][j](i代表行,j代表列)
二、知名老师的实现方式
最近在网上看到一名知名培训老师实现杨辉算法的方式,想来帮他分析一下。他的实现代码如下:
public class TestYangHui {public static void main(String[] args) {int[][] yangHui = new int[10][];//1.初始化二维数组for(int i = 0;i < yangHui.length;i++){yangHui[i] = new int[i + 1];}//2.显式的为二维数组的每个元素赋值for(int i = 0;i < yangHui.length;i++){for(int j = 0;j < yangHui[i].length;j++){yangHui[i][0] = yangHui[i][i] = 1;//①if(i > 1 && j > 0 && j < i){ //②yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1];}}}//遍历二维数组for(int i = 0;i < yangHui.length;i++){for(int j = 0;j < yangHui[i].length;j++){System.out.print(yangHui[i][j] + "\t");}System.out.println();}}}
看着是不是头都大了??不急,我们慢慢来分析下。
总体看,这个老师用了三组for循环。第一组for循环是用于初始化二维数组,第二组for循环用于填充二维数组,第三组for循环用于遍历输出二维数组。用了这么多for循环,可想而知这个简单算法的执行效率有多么慢。
再来看标红的地方。①处的目的是想把杨辉三角形每一行的首尾元素都填充1,②处的目的是将剩余的元素按[i][j]=[i-1][j-1]+[i-1][j]规律填充。这样写虽然可以实现功能,但是明显增加了算法的复杂程度。
三、杨辉算法的简易实现
下面是我的代码:
public class Test {//演示杨辉三角算法public static void main(String[] args) {yanghui(10);}/** * * @param line:指定杨辉三角形的行数 */public static void yanghui(int line) {int[][] m=new int[line][];//声明二维数组for(int i=0;i<m.length;i++) {m[i]=new int[i+1];//对二维数组初始化for(int j=0;j<=i;j++) {int end=m[i].length-1;//最后一个元素if(j==0||j==end) {m[i][j]=1;}else {m[i][j]=m[i-1][j-1]+m[i-1][j];//核心算法}System.out.print(m[i][j]+" ");}System.out.println();}}}
我这个代码用一组for循环就可以实现二维数组的初始化、赋值、输出。而且实现算法是适用于每一行的,即不管是哪一行,只要遇到开头元素和结尾元素都是1,剩下的就按另一个规律处理。此外,通过传参的方式声明二维数组,增加了该算法的灵活性。
如有不妥的地方,欢迎指正哦
阅读全文
1 0
- 杨辉三角形算法(java实现)
- 蓝桥杯:基础练习 杨辉三角形【JAVA算法实现】
- 大学常见算法的java实现及思考-打印帕斯卡三角形(杨辉三角)
- 【LeetCode-面试算法经典-Java实现】【120-Triangle(三角形)】
- 【LeetCode-面试算法经典-Java实现】【119-Pascal's Triangle II(帕斯卡三角形(杨辉三角)II)】
- java 实现(代码) -- 水仙花数 + 杨辉三角形
- 三种方式打印杨辉三角形(JAVA实现)
- java语言实现:杨辉三角形
- 杨辉三角形算法
- java 杨辉三角形
- 生成杨辉三角形算法
- C# 杨辉三角形算法
- 算法基础 杨辉三角形
- C# 杨辉三角形算法
- 巴斯卡(Pascal)三角形Java算法
- java程序实现打印完美对齐的杨辉三角形
- 蓝桥杯-杨辉三角形(java)
- 【LeetCode-面试算法经典-Java实现】【118-Pascal's Triangle(帕斯卡三角形)】
- springcloud(四):熔断器Hystrix
- 转载:美团点评数据库高可用架构的演进与设想
- Unable to get uboot console on LS1012A freedom board.
- 2.3网站的高可用架构之高可用数据
- 腾讯2017秋招笔试编程题:编码 [python]
- 杨辉三角形算法(java实现)
- 欢迎使用CSDN-markdown编辑器
- 群智问题(节选自nature)
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- 模糊查询,批量删除, 添加用户,隔行变色,排序,过滤器
- 树莓派
- springcloud(六):配置中心git示例
- 基于Qt的SocketIO客户端实现 【三】发送与接收
- springcloud(七):配置中心svn示例和refresh