王彪-20162321-杨辉三角

2024-02-03 15:40

本文主要是介绍王彪-20162321-杨辉三角,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我的策略

我想法是利用循环数组打印杨辉三角,事先通过PPT资料了解到要想打印n行的杨辉三角那么数组的长度就应该定义为(n+2)。老师给的资料中有一个演示了杨辉三角的打印过程,但不完全。其中涉及到一个问题“初始定义”
打印5行数,数组的长度应该定义为7.那么初始的值应该设置为:index[0]=0,index[1]=1,index[2]=0;
利用双循环来打印,第一层循环是层数,第二层循环是每层的元素。这里出现了一个问题:第二层循环的第一次应该循环几次?按照一般思路来说,n层那么第二层打印元素的循环就应该按照1.2.3.4...递增。但是却出现如下问题:
1065456-20171022232025209-1170491113.jpg 于是我单步跟踪了一下:1065456-20171022233214084-232467273.jpg
动手画出的图表明在外层循环到第三次也就是打印第三层“1 2 1”时出现了差错,分析表明,其实一开始就已经出错了,能打印出一二层是因为巧合的原因。1065456-20171022233448693-1497925148.jpg
根据自己的思路内层循环每次都会先有出列再入列的操作,所以每层的打印后正确的队列变化应该是:1065456-20171022234643443-2017053671.jpg
所以我修改了内层打印的次数,在一开始便直接打印出首层的“1”:1065456-20171022235021740-19561016.jpg

我的代码

    public class PascalTriangle {public static void main(String[] args) {PascalTriangle myPascal = new PascalTriangle();myPascal.Circular(5);}public void Circular(int n){CircularArrayQueue myCircular = new CircularArrayQueue(n+2);myCircular.enqueue(0);myCircular.enqueue(1);myCircular.enqueue(0);System.out.print(1+" "+"\n");for (int i=1;i<=n;i++){for (int j=1;j<=i+1;j++){int first = (int)myCircular.dequeue();int second = (int)myCircular.first();int num = first+second;myCircular.enqueue(num);System.out.print(num+" ");}myCircular.enqueue(0);System.out.print("\n");}}}

感想:这个程序看似代码很少,但其中也走了不少弯路,例如在开始时单纯的根据视频资料上面来处理,并没有考虑到先出列的操作,并且在后面补0的操作,于是想的是在每次打印出一层的元素后,重新定义一个数组以0为第一个元素再插入上一行打印的元素再在最后插入0,显得十分的复杂,中途就放弃了这种数据结构。总之这次实验也是学到了不少,再写这边博客时,关于用计算链在数组中表示二叉树出现了点状况,顿时感觉“革命尚未成功,同志人需努力”

转载于:https://www.cnblogs.com/wbiao21/p/7712563.html

这篇关于王彪-20162321-杨辉三角的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/674628

相关文章

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里

c语言——用一维数组输出杨辉三角形

一.代码 #include <stdio.h>int Num[100];int Hang;int Lie;int a;int Flag;int main() {Lie = 1;Hang = 1;a = 0;while (1) {//列1为1if (Lie == 1) {Num[1] = 1;Lie++;}//数据存到数组里面while (Hang >= Lie && Hang !=

C140 杨辉三角

C140 杨辉三角 题目题解(94)讨论(102)排行面经 new 简单  通过率:29.57%  时间限制:1秒  空间限制:256M 知识点C++工程师牛客  校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。 描述 KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上

Python 杨辉三角 生成器

# -*- coding: utf-8 -*-# 杨辉三角"""列表生成式直接占用空间,generator一边循环一边计算的机制,存储一个算法,可以通过for循环迭代调用generator不能使用列表生成式可以通过函数实现,含有yield关键字则为生成器普通函数返回一个结果,按照顺序执行生成器函数返回的是一个生成器对象,每次调用next()的时候执行,遇到yield语句返回,再次执行时

跟LintCode的算法题杠上了(2424输出杨辉三角)

题目 你的代码需要从标准输入流(控制台)中读入一个正整数 n,然后计算出前 n 行的杨辉三角并将结果打印到标准输出流(控制台)中。 样例 评测机会将整个项目的代码编译为一个可执行的 Main 程序,并按照这样的方式执行你的代码 Main。你的代码需要从标准输入流(控制台)中读入数据 n,并将前 n 行的杨辉三角打印到标准输出流(控制台)中。输出格式见样例。 样例一 * 你的代码需要从标准

JAVA学习-练习试用Java实现“杨辉三角 II”

问题: 给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex = 3 输出: [1,3,3,1] 示例 2: 输入: rowIndex = 0 输出: [1] 示例 3: 输入: rowIndex = 1 输出: [1,1] 提示: 0 <= rowIndex <=

列表求杨辉三角

利用列表可变,有序,可追加的特性来求杨辉三角。 (1):列表嵌套列表 n = 6triangle = [[1], [1, 1]]for i in range(2, n):pre = triangle[i-1]cur = [1] * (i+1)for j in range(i-1):cur[j+1] = pre[j] + pre[j+1]triangle.append(cur)print(

LeetCode 算法:杨辉三角 c++

原题链接🔗:杨辉三角难度:简单⭐️ 题目 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows = 1 输出: [[1]] 提示:

【蓝桥杯省赛真题47】python杨辉三角形计算 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

目录 python杨辉三角形计算 一、题目要求 1、题目描述 2、编程实现 3、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python杨辉三角形计算 第十四届蓝桥杯青少年组python比赛省赛真题 一、题目要求 (注:input()输入函数的括号中不允许

【数学题-递推找规律】BNU 4225 杨辉三角形

【题目链接】click here~~ 【题目大意】 LZM 同学比较牛, Lsy 最近也越来越生猛,他们思路快,代码速度神勇。近期惊闻此二人均要参加校赛,队里决定出些题目卡他们,因为他们的罢工给题目组留下了繁重的负担……(报复报复) 于是, XsugarX 瞄准了 LZM 不太喜欢看的数学题目以及 Lsy 猜公式的喜好,奸笑中( ^.^ )。这个数学问题是个比较古老的问题,有如下