课堂作业之杨辉三角形
2017-11-21 19:34
225 查看
杨辉三角形数学模型
1 11 121 1331
通过java实现打印杨辉三角形
用循环队列来实现杨辉三角形的打印
package PascalTriangle; import javafoundations.CircularArrayQueue; import java.util.Scanner; public class YHTriangleQueue { public static void main(String args[]) { Scanner scan = new Scanner(System.in); System.out.print("请输入杨辉三角的行数:"); int n = scan.nextInt(); int i = 0; CircularArrayQueue<Integer> queue = new CircularArrayQueue<>(); //初始值设置为 0,1 queue.enqueue(0); queue.enqueue(1); while (i <= n) { int x = queue.dequeue(); int y = queue.first(); if (x == 0) { i++; //每次 x = 0 时行数加一 queue.enqueue(0); } queue.enqueue(x + y); //上一轮输出值与检测值之和,相当于前一行相邻的两元素之和 if (x == 0) { System.out.println(); //删除 0 相当于换行 for (int j = 0; j < 2 * (n - i); j++) { //根据具体变化动态输出空字符串 System.out.print(" "); } } else System.out.print(x + " "); //根据具体变化动态输出空字符串 } } }
单步跟踪
二维数组打印杨辉三角
public 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 ++) { yangHui[i][0] = yangHui[i][i] = 1; //每一行第一个数和最后一个数都为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(); } } }
两个一维数组打印杨辉三角
public class YangHui2 { public static void main(String[] args) { int num = 20; int[] up = new int[num]; //申请UP数组用以存储上一层的数据 for(int i = 0; i <= num; i ++) { int[] a = new int[i]; //申请a数组用以存放本层的运算结果 for(int j = 0; j < i; j ++) { if(j == 0 || j == i) //将本层第一个和最后一个数值赋值为1 a[j] = up[j] = 1; if(i > 2 && j !=0 && j != i ) //当从第三行起,非首尾数字的值等于上方两数只和 a[j] = up[j - 1] + up[j]; } for(int k = 0; k < i; k ++) //将本层的运算结果存到up数组中,以供一下次运算使用 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(); } } }
一个一维数组打印杨辉三角
public 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"); int temp = (1 + i) * i / 2; //temp表示已经存储的数字个数 for(int j = 0; j <= i; j ++) { if(j == 0 || j == i) //每一层的首尾数值为1 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(); } }
相关文章推荐
- JS基础,课堂作业,计算器
- 软件工程课堂作业(二)——升级版随机产生四则运算题目设计思想
- 课后作业04(课堂例子验证)
- 软件工程课堂作业(十)——结对开发(五)
- 课堂作业之计算器
- 吴恩达deeplearning.ai课堂作业:Class 1 week4-Deep Neural Network for Image Classification
- 软件工程课堂作业——计算最优惠价格
- 课堂作业3-7
- 栋哥你好,让我们回顾最初认识C++的时候(课堂作业)
- 课堂作业2
- 课堂作业1
- 作业:书上P135与课堂讲的作比较
- 课堂作业02——读架构漫谈后感
- 课堂作业3-描绘淘宝网六个常见属性场景
- C++语言 输出杨辉三角形 要求输出10行。
- 课堂作业04——读大型网站技术架构后感
- 课堂作业:评估手机输入法——讯飞
- 课堂作业-寻找水王
- 【九度OJ】题目1073:杨辉三角形 解题报告
- 课堂作业,练习一