三种方式打印杨辉三角形(JAVA实现)
//采用一个二维数组打印杨辉三角
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实现)的更多相关文章
- Java实现线程的三种方式和区别
Java实现线程的三种方式和区别 Java实现线程的三种方式: 继承Thread 实现Runnable接口 实现Callable接口 区别: 第一种方式继承Thread就不能继承其他类了,后面两种可以 ...
- 0036 Java学习笔记-多线程-创建线程的三种方式
创建线程 创建线程的三种方式: 继承java.lang.Thread 实现java.lang.Runnable接口 实现java.util.concurrent.Callable接口 所有的线程对象都 ...
- 三种方式上传文件-Java
前言:负责,因为该项目他(jetty嵌入式开始SpringMvc)实现文件上传的必要性,并拥有java文件上传这一块还没有被曝光.并 Http 更多晦涩协议.因此,这种渐进的方式来学习和实践上载文件的 ...
- java加载配置文件的三种方式
比如我们要加载db.properties文件 如图: 比如我们要加载source目录下的db.properties文件.就有以下几种方式 第一种是文件io流: public static void l ...
- 【java多线程】多线程的创建三种方式--笔记
申明:线程的概念以及进程的相关概念,可以参考网络上其他资料,这里只讨论多线程是怎么实现. 一.多线程的简单理解 明白什么是多线程,小生通俗一点的理解为:在一个程序里,我想同时让这个程序完成多个任务. ...
- java实现HTTP请求的三种方式
目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...
- 【转载】java实现HTTP请求的三种方式
目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...
- java:struts框架2(方法的动态和静态调用,获取Servlet API三种方式(推荐IOC(控制反转)),拦截器,静态代理和动态代理(Spring AOP))
1.方法的静态和动态调用: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...
- Java反射学习-2 - 获取Class对象的三种方式
package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ...
随机推荐
- maven 执行mvn package/clean命令出错
mvn compile/test都没报错,但是执行mvn package和mvn clean时候就报错:a required class was missing while executing.... ...
- 业余草通告CSDN博客用户zhang__ao非法转载文章的公告
今天早上有粉丝给我反馈,CSDN的一位用户大量非法的转载了我的个人网站:业余草(www.xttblog.com)上的大量文章.现一对该用户转载业余草上网站上的所有文章进行了举报! 从上图中可以看出,该 ...
- appium 原理解析
Appium是 c/s模式的appium是基于 webdriver 协议添加对移动设备自化api扩展而成的webdriver 是基于 http协议的,第一连接会建立个 session 会话,并通过 p ...
- vue源码学习-vnode的挂载和更新流程
概述 本文主要介绍在视图的渲染过程中,Vue 是如何把 vnode 解析并挂载到页面中的.我们通过一个最简单的例子来分析主要流程: <div id="app"> {{s ...
- 彻底弄懂AngularJS中的transclusion
点击查看AngularJS系列目录 彻底弄懂AngularJS中的transclusion AngularJS中指令的重要性是不言而喻的,指令让我们可以创建自己的HTML标记,它将自定义元素变成了一个 ...
- Quartz源码——JobStore保存JonDetail和Trigger源码分析(一)
我都是分析的jobStore 方式为jdbc的SimpleTrigger!RAM的方式类似分析方式! {0} :表的前缀 ,如表qrtz_trigger ,{0}== qrtz_ {1}:quartz ...
- AF_INET
AF_INET(又称PF_INET)是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的:而AF_UNIX 则是Unix系统本地通信. 选择AF_INET 的目的就是使用IPv4 ...
- Charles Proxy v4.1.4 免费注册激活方法
去官网下载最新版Charles,目前是v4.1.4 下载后安装Charles,然后先打开一次Charles软件(Mac系统需要先打开一次,Windows不需要) 到网站 http://charles. ...
- Linux Bash Shell字符串截取
#!/bin/bash#定义变量赋值时等号两边不能有空格,否则会报命令不存在 # 运行shell脚本两种方式 # 1.作为解释参数 /bin/sh test.sh ; 2.作为可执行文件 chmo ...
- 集 降噪 美颜 虚化 增强 为一体的极速图像润色算法 附Demo程序
在2015年8月份的时候,决心学习图像算法. 几乎把当时市面上的图像算法相关书籍都看了一遍, 资金有限,采取淘宝买二手书,长期驻留深圳图书馆的做法, 进度总是很慢,学习算法不得其法. 虽然把手上所有书 ...