作业要求

  • 1 用循环队列实现
    2 参考PPT用循环队列打印杨辉三角
    3 用JDB或IDEA单步跟踪排队情况,画出队列变化图,包含自己的学号信息
    4 把代码推送到代码托管平台
    5 把完成过程写一篇博客:重点是单步跟踪过程和遇到的问题及解决过程
    6 提交博客链接

设计思路

  • 杨辉三角的特点:
    ① 第 i 行有 i 个元素;
    ② 每一行的第一个元素和最后一个元素都为1;
    ③ 除了1之外,每个元素的值,都等于上一行同位置的元素以及前一个元素的和。

  • 考虑到这些特点,我们可以使用“坐标”的方式,即使用二维数组实现,但是这种方法占用的空间较大,并且计算次数较多;

  • 使用循环队列实现可以节省一定空间,如果要求计算并输出杨辉三角前 n 行的值,则队列的最大空间应为 n+2。

代码实现

  • 二维数组实现:
public class YHTriangleArray {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入杨辉三角的行数:");int a = scan.nextInt();//定义二维数组存放杨辉三角int arr[][] = new int[a][a];//行数for (int i = 0; i < a; i++) {//列数for (int j = 0; j <= i; j++) {//每行的第一列和最后一列为1if (j == 0 || j == i)arr[i][j] = 1;//其余列等于前一行的相同列 + 前一行的相同列-1;if (i > 0 && j > 0 && j < i)arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}traversal(arr);}//遍历二维数组public static void traversal(int arr[][]) {System.out.println("杨辉三角如下:");//二维数组的行for (int i = 0; i < arr.length; i++) {//二维数组的列for (int j = 0; j <= i; j++) {int k = arr.length - i - 1;//居中排列if (j == 0) {for (int a = 0; a < k; a++)System.out.print(" ");}System.out.print(arr[i][j] + " ");}System.out.println();}}
}
  • 循环队列实现:
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,1queue.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(" ");}} elseSystem.out.print(x + "   ");  //根据具体变化动态输出空字符串}}
}

运行结果及单步跟踪过程

  • 二维数组实现:

    运行结果:(左对齐)

    运行结果:(居中)

    单步跟踪过程:(以第三行输出 1 2 1 为例,分别记录赋值的3次)(点击图片可放大)

  • 循环队列实现:

    运行结果:(居中)

    单步跟踪过程:(以第二行输出 1 1 为例,分别记录输出过程中的3次)(点击图片可放大)

简易变化图

  • 二维数组实现:

  • 循环队列实现:

    【注】输出 (x,y,z) 表示输出第 x 行中第 y 个非空的元素值 z .

遇到的问题及解决方案

  • 【问题】在输出了左对齐的杨辉三角之后,我想打印居中的杨辉三角,为什么打印的杨辉三角出现了一些格式错误问题?

  • 【解决方案】使用debug单步跟踪,并一次次地修改代码。这里只举一例:

    从这次的输出结果中,可以看出从第二行开始,空字符串的输出位置就出现了问题,我发现是因为在此循环中缺少条件判断而导致每行元素之间与每行第一个非空字符串与其边缘的初始间距相同,所以第二行元素间的间距很大,到第五行时就已经小到元素之间只相距一个空字符串了,所以在这里只需要添加一个条件判断语句即可,添加后运行成功截图如下:

转载于:https://www.cnblogs.com/super925/p/7712142.html

20162330 第六周 蓝墨云班课 队列加分项相关推荐

  1. 20162330 第六周 蓝墨云班课 队列课下作业

    作业要求 1 补充课上没有完成的作业 2 参考15.3节,用自己完成的队列(链队,循环数组队列)实现模拟票务柜台排队功能 3 用JDB或IDEA单步跟踪排队情况,画出队列变化图,包含自己的学号信息 4 ...

  2. 20162330 第十周 蓝墨云班课 十字链表

    作业要求 画出附件中有向图的十字链表:(附件见下图) 示例分析 示例如下: 分析: ① 首先可以标出各个顶点的序号: ② 找到每个顶点对应的入弧和出弧,可以进行标注: ③ 对于每一行的链表,都会有对应 ...

  3. 蓝墨云班课计算机测试题答案,20155317 第一周蓝墨云班课考题

    20155317 2016-2017-2 蓝墨云班课考题第2周 上周蓝墨云班课考题 1 ( 单选题 | 1 分) Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比. ...

  4. 20155317 第一周蓝墨云班课考题

    20155317 2016-2017-2 蓝墨云班课考题第2周 上周蓝墨云班课考题 1 ( 单选题 | 1 分) Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比. ...

  5. 20155317 2016-2017-2 蓝墨云班课考题第2周

    20155317 2016-2017-2 蓝墨云班课考题第2周 三: 1.用gcc -g编译vi输入的代码 2.在main函数中设置一个行断点 3.在main函数增加一个空循环,循环次数为自己学号后4 ...

  6. 基于蓝墨云班课的“出门门票”设计与改进

    陈皓(左耳朵耗子)(微博,博客)说:朋友圈很重要.一个人的朋友圈很重要,你在什么样的朋友圈,就会被什么样的朋友圈所影响. 因为<构建之法(电子版)>结识了人生好教练:周筠老师(知乎,微博, ...

  7. 基于蓝墨云平台的计算机教学,基于蓝墨云班课的中职计算机“分层教学”模式探究...

    崔月娇 一.教学现状概述 一方面,我校是面向全国招生,部分欠发达地区的学生由于资源配置导致计算机基础相当薄弱,而来自发达地区的学生早早地接触了计算机,部分计算机基础操作已相当熟练,学生的计算机水平参差 ...

  8. 补交20145226蓝墨云班课 -- MyCP

    蓝墨云班课 -- MyCP.java 具体描述: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt ...

  9. 使用springboot+vue+element-ui模仿蓝墨云班课

    声明:前端大量CSS样式从原网站复制来的,蓝墨云班课也十分好用,大家可以了解下 项目地址:前端+后端+数据库 https://gitee.com/cao-qiangqiang/a04test07/tr ...

最新文章

  1. Android SDK 2.3与Eclipse最新版开发环境搭建(一)
  2. 语音信号处理MATLAB实现
  3. 吴裕雄 19-Mysql 连接的使用
  4. Struts2面试问答
  5. java xlsx怎么转换成excel格式_python小工具 | Excel的xls和xlsx格式文件转换
  6. 电视android怎么解决,安卓手机怎么投屏到电视?用这3种方法可完美解决
  7. 没有日志 mysql 5.6主从同步_mysql之 mysql 5.6不停机主从搭建(一主一从基于日志点复制)...
  8. ryzen linux 搭配显卡,R5 1500X配什么显卡好 适合AMD锐龙5 1500X搭配的显卡推荐
  9. 快速查找对方IP地址经典技巧汇总
  10. CleanMyPC最新2022win系统清理工具软件
  11. java经典算法(二)---zws
  12. 安装kubernetes k8s v1.16.0 国内环境
  13. 《计算机网络自顶向下》笔记
  14. xlsx文件的多表读取与写入
  15. EChat(简易聊天项目)八、Socket实现即时通信(包括部分修改)
  16. 门禁控制器的选购指南
  17. SQL Server 替换越南语(越南文)音标SQL脚本
  18. MATLAB在线更新失败后无法打开
  19. Spark大数据平台应用实战
  20. 2010年10大网络流行语及其他流行语

热门文章

  1. html doc js,关于JSDoc插件
  2. 基于射频指纹的LoRa网络安全方案研究
  3. 什么软件可以测试鬼,PP助手新奇App推荐 《鬼魂探测器》能抓鬼?
  4. 求指教:报错KeyError: “None of [Index([‘2022/1/1 0:00:00‘, ... ],\n dtype=‘object‘] are in the [index]“
  5. 协商的定义及研究范畴
  6. 搞定Python,Python书单高级篇
  7. WBS的基本定义、基本内容及用途
  8. JS中reduce的用法
  9. Anaconda3完全卸载+重新安装(2022.7)全网最新
  10. 阿里云性能测试工具PTS介绍