//采用一个二维数组打印杨辉三角
class Yanghui1 {
public static void main(String[] args)
{
//设置杨辉三角的行数
int num = 10; //申请二维数组存放杨辉三角数值
int[][] yangHui = new int [num][];
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 ++)
{
//每一行第一个数和最后一个数都为1
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 < (num - i - 1) / 2; j ++)
System.out.print("\t");
for(int j = 0; j < yangHui[i].length; j ++)
System.out.print(yangHui[i][j] + "\t"); System.out.println();
}
} } //采用两个一维数组打印杨辉三角
class YangHui2
{
public static void main(String[] args)
{
int num = 20; //申请UP数组用以存储上一层的数据
int[] up = new int[num];
for(int i = 0; i <= num; i ++)
{
//申请a数组用以存放本层的运算结果
int[] a = new int[i];
for(int j = 0; j < i; j ++)
{
//将本层第一个和最后一个数值赋值为1
if(j == 0 || j == i)
a[j] = up[j] = 1; //当从第三行起,非首尾数字的值等于上方两数只和
if(i > 2 && j !=0 && j != i )
a[j] = up[j - 1] + up[j];
} //将本层的运算结果存到up数组中,以供一下次运算使用
for(int k = 0; k < i; k ++)
up[k] = a[k]; //打印本层数字
for(int k = 0; k < (num - i - 1) / 2; k ++)
System.out.print("\t");
for(int k = 0; k < i; k ++)
System.out.print(a[k] + "\t"); System.out.println();
}
}
} //采用一个一维数组打印杨辉三角
class YangHui3
{
public static void main(String[] args)
{
int num = 10; //申请数组存放杨辉三角的数值
int yangHui[] = new int[(1 + num) * num / 2];
for(int i = 0; i < num; i ++)
{
for(int j = 0; j < (num - i - 1) / 2; j ++)
System.out.print("\t"); //temp表示已经存储的数字个数
int temp = (1 + i) * i / 2;
for(int j = 0; j <= i; j ++)
{
//每一层的首尾数值为1
if(j == 0 || j == i)
yangHui[temp + j] = 1; else
//非首尾数值为上面两数之和
yangHui[temp + j] = yangHui[temp + j - i] + yangHui[temp + j - i - 1];
System.out.print(yangHui[temp + j] + "\t");
}
}
System.out.println();
}
}

三种方式打印杨辉三角形(JAVA实现)的更多相关文章

  1. Java实现线程的三种方式和区别

    Java实现线程的三种方式和区别 Java实现线程的三种方式: 继承Thread 实现Runnable接口 实现Callable接口 区别: 第一种方式继承Thread就不能继承其他类了,后面两种可以 ...

  2. 0036 Java学习笔记-多线程-创建线程的三种方式

    创建线程 创建线程的三种方式: 继承java.lang.Thread 实现java.lang.Runnable接口 实现java.util.concurrent.Callable接口 所有的线程对象都 ...

  3. 三种方式上传文件-Java

    前言:负责,因为该项目他(jetty嵌入式开始SpringMvc)实现文件上传的必要性,并拥有java文件上传这一块还没有被曝光.并 Http 更多晦涩协议.因此,这种渐进的方式来学习和实践上载文件的 ...

  4. java加载配置文件的三种方式

    比如我们要加载db.properties文件 如图: 比如我们要加载source目录下的db.properties文件.就有以下几种方式 第一种是文件io流: public static void l ...

  5. 【java多线程】多线程的创建三种方式--笔记

    申明:线程的概念以及进程的相关概念,可以参考网络上其他资料,这里只讨论多线程是怎么实现. 一.多线程的简单理解 明白什么是多线程,小生通俗一点的理解为:在一个程序里,我想同时让这个程序完成多个任务. ...

  6. java实现HTTP请求的三种方式

    目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...

  7. 【转载】java实现HTTP请求的三种方式

    目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...

  8. java:struts框架2(方法的动态和静态调用,获取Servlet API三种方式(推荐IOC(控制反转)),拦截器,静态代理和动态代理(Spring AOP))

    1.方法的静态和动态调用: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...

  9. Java反射学习-2 - 获取Class对象的三种方式

    package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ...

随机推荐

  1. Codeforces Round #436 (Div. 2) C. Bus

    http://codeforces.com/contest/864/problem/C 题意: 坐标轴上有x = 0和 x = a两点,汽车从0到a之后掉头返回,从a到0之后又掉头驶向a...从0到a ...

  2. Codeforces 858A. k-rounding 数论

    题目: 题意:输入n和k,找到一个最小的数,满足末尾有至少k个0和是n的倍数. 最小的情况 ans = n,最大的情况 ans = n*pow(10,k). 令 k = pow(10,k); 我们发现 ...

  3. Drying poj3104(二分)

    Drying Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7916   Accepted: 2006 Descriptio ...

  4. Average of Levels in Binary Tree

    Given a non-empty binary tree, return the average value of the nodes on each level in the form of an ...

  5. python之路第五篇之递归(进阶篇:续:经典例子剖析)

    递归 在函数内部,可以调用其他函数; 如果一个函数在内部调用自身本身,这个函数就是递归函数. 例如,我们来计算阶乘: n! = 1 x 2 x 3 x ... x n, 用函数f1(n)表示,可以看出 ...

  6. 数据的分类-JavaScript数据类型

    JavaScript数据类型 1.数据类型是什么? 我们接触的绝大多数程序语言来说,把数据都进行了分类,包括数字.字符.逻辑真假:int,long,string,boolean....等等:我们都知道 ...

  7. 全方位解读及介绍windows网络安全及常见攻击方式

    本来我就是来逛逛论坛的,可是看到前面有位一样是干网络安全的同行,留下来过的痕迹,发了一篇相对不错的文章,我寻思咱既然来这一趟,也不能显得就比别人差啊.所以我也就写了这一片不算成熟小文章,望各位共勉之哈 ...

  8. samba的安装和配置

    samba是Linux系统上的一种文件共享协议,可以实现Windows系统访问Linux系统上的共享资源,现在介绍一下如何在Ubuntu 14.04上安装和配置samba 实验环境 Ubuntu 14 ...

  9. redis的sentinel主从切换(failover)与Jedis线程池自动重连

    本文介绍如何通过sentinel监控redis主从集群,并通过jedis自动切换ip和端口. 1.配置redis主从实例 10.93.21.21:6379 10.93.21.21:6389 10.93 ...

  10. javaScript基础的基础

    JavaScript是一个脚本语言,需要有宿主文件,他的宿主文件是HTML文件. 与JAVA没有直接关系 一般写在 1.head里面 2.body里面 3.</html>后面 一般写在&l ...