00:00
那接着呢,我们来看看后边这个题,后边这个题呢就有点儿意思了,说使用二维数组打印一个十行的洋灰三角。首先呢,第一个问题,什么叫氧灰三角?这个好像是上中学的时候应该见过是吧?对,就是这样的一个形状的这个这个这个羊灰三角哈,它的这个特点是啥呀,就是对这个说的对啊,就是嗯,整个来讲长这个样子,然后你随便呢找一个数,嗯,然后这个数呢,等于它的上边的这个数和上边的左边的这个数的一个和,哎,就构成你下边这个数了,随便你找一个都是这样,哎,84的话呢,上边这个数和上边这个数的左边这个数的和。这样,那如果要是用关系来刻画的话呢,就是这种刻画方式哈,嗯,I阶,然后呢,先看这个吧,就是I街这个位置,它的上就是同呃上一行的啊,同一列的这个是这个。
01:06
然后呢,这个这个的左边的,嗯,这不就是接待减个一。就这样的一种刻画啊。那那你要是对于这种边上的这种是不是就不行了。所以它这个主要指的呢,就是非第一个和非最后一个,你要是第一个的话呢,它上边呢,左边没有了啊,所以我们这里边就是每一行里边的第一个。和最后一个呢,都是一,那除了第一个和最后一个之外,剩下的这些元素呢,都按照咱们这个规则来啊,这呢就叫一个洋灰三角。这有啥用啊?没啥用啊,也有用,就是这其实就涉及到这个一说,还都是比较伤心的事儿了啊,就是咱们中国的话呢,其实以前不是也有所谓的叫九章算术啊等等是吧,其实还有一些好多关于数学啊,关于一些天文地理方面的一些描述的东西啊,有的是一些遗失了,还有一些呢,看不懂啊,就是没有给大家保存下来,大家也不明白要说什么啊,其实更多的呢,就是中国的这种体系呢,咱们呢,就是总结出来都是一些现象级的东西说诶这块出来个这个东西,这块有个勾股定理是吧,都是一些小小规律的东西,当然呢,没有把它这个连成一大片啊,或者换句话说呢,也可能连成一片了,当然咱们现现在的当代人呢,就没有把它复原出来,咱们现在其实学的这个数学呢,或者这个自然科学啊,都是基于这个西方的是吧,当年那个比如牛顿那个时代啊,或者说后来这个爱因斯坦的一个时代啊等等,就是西方的建立的一套这个自然科学一套体系,咱们现在其实学的都是按照他们的一套体系过来的啊。
02:40
那那那这个呢,就把咱们这种所谓的一些现象的东西呢,就融到人家那个体系里了,所以咱只是说星星点点的出现了一些贡献啊,你像这个阳威三角的话呢,你可能猛一看觉得没啥用,那其实呢,这里边儿的每一行,大家呢,上高中应该也学过这个二项式定理。排列组合的时候啊,忘了都是吧,那比如说像这个A加上B,它的N次幂,这个你展开不就是一个好多项吗?哎,这个每一项的那个系数,就是这里边儿的每一个的这个值。
03:13
啊,你像这个NN,如果要是二,这就A加B的平方不就三项嘛,这就这个是二三项三项的,它的系数呢,那不就是A方加上2AB加上B方,这不就是121嘛,不就这个121嘛,当这个二三的时候呢,它就是它的系数就长这样子啊,就往下展开啊,你要这样一说的话呢,外国这个具体忘了是什么时候了,他才出现的这种二项式定理,然后呢,咱们这呢,多少年以前就出现了是吧,我们只能这样的方式去找一点这个民族自豪感是吧?哎,就跟说勾股定理一样,说我们比那个所谓的叫毕达哥拉斯定理啊出现了早多少年。啊,但是咱们没有体系化啊,这都没有体系化的东西,所以有一些东西呢,也不被人家外国这个所认可啊,不是说他歧视咱啊,有些确实很难说的清楚是吧?好,那这块的话呢,我们看这道问题啊,这个问题的话呢,就希望呢,我们从那个控制台呢,输出这样的一个效果啊这呢给你明确的提示了,让你用二维数组来做,那相当于呢,就是我们造了一个二维数组,给这个二维数组元素赋值。
04:18
这个元素赋值的时候呢,满足这个规律就可以了,好把它呢CTRLC一下。那这个呢,也是咱们的一个练习题啊,那这个题的话呢,大家就可以非常这个放心的写一个拼音。啊,再加个test吧,啊这样啊。就整个这个数学史上,或者这个物理史上,就是在以前的时候呢,用中国人命名的其实很少是吧。啊,当然其实能看到咱们国家这些年其实挺重视这个科研创新的哈,尤其是你看最近这个嫦娥的四号,那个卫星发过去了哈,这个世界上还挺震动的,就是说从来没有人去这个月球的背面看一看,哎,中国人就过去看了看是吧?哎,然后呢,你看那些搞这个科研的,中国不光是这个嫦娥四号了,包括这个这个超级计算机,中国的超级计算机一直在世界上排名还挺靠前的哈,你看到那些科学家,你发现他们其实整个这个梯队还是很年轻的,大概的应该是在30岁左右,对,所以说你这个前途可畏是吧?啊就是这叫什么,不是前途可畏的,就是后生可畏是吧?啊,你要是一看都是一些老爷子,然后头发都没了,那那你感觉就是后边人怕接不上,但是你看到30岁,就是大概在30岁到40岁之间,基本上是这些人的一个精力啊,还有这个智力水平啊,还有体力的一个顶峰啊,所以可以贡献的还可以很多是吧,基本上咱们就把这个梯队呢,就都建立起来了。
05:49
啊,国家现在往这块投的钱也特别多是吧?很重视,应该也是应该的哈,嗯,是不是老是网上有人说是这个少注重些这个明星是吧?谁打个喷嚏都能上头条娱乐明星是吧?很夸张哈,行,拉回来哈,我们看这道题,这道题的话呢,让我们去打印一个十行的阳灰三角,那我们把它变成一道辩程题,辩证题的话呢,我们就要分析这个思路了。
06:16
那我们首先呢,来写一下这个思路啊,接着呢,我们再往下去写啊,那这道问题的话呢,其实把它剥离出来这个题面的这个东西以后呢,其实就是一道什么题呢。啊,算法题也行啊,就是一道呢,二维数组给它的声明以及赋值的一道题啊,只不过负的这个值呢,它比较有特点,让你按照这样的一个规律呢去付啊就是这样一个问题,所以说很很显然的第一问就是我们来去声明啊,二维数组或者叫声明并初始化,诶我们的二维数组啊,你初始化以后你才可以去复制啊,那这个初始化大家想一想,我们应该用哪种初始化方式。
07:00
对,显然得动态了,你要动态都写完,静态写完了,那这个题就做完了,都是吧,啊你你不能这个一上来说自己在这里边整个小括号写个一,第二行咔咔有个小括号一不能这样啊哈,跟上道题这样那那就不行了哈,嗯,这个题呢,就是关键的让我们通过一个程序的方式给它赋值,所以这块呢,我们很显然应该用动态初始化,然后呢,数组造完了,下一步对,那就是给数组的元素赋值。那这呢也是我们这道题的一个核心,那复完值以后,这个数组呢,就都有我们要的这个数据了,第三步呢,你想看到这样一个效果,那就只是一个便利吧,哎,这就搞定了,所以整体来看呢,其实就这三步啊,最核心的呢,肯定是第二步了。行,那我们就按照这个顺序呢来去做,首先声明并初始化二维数组,很显然呢,我们这个阳位三角呢,是一个因特形的元素啊,所以呢,我们就是因特形的二维数组,哎,或者这个数组我们就写叫阳灰啊,终于不用说叫写英文了,是吧,写拼音就可以啊,它就叫杨辉,然后new一个in形的。
08:21
嗯,二位数组这呢,你最起码得指定一个啊,咱们正好不是十行嘛。这个位置能写吗?为什么对每行的这个个数列不一样对吧?所以这个不能写了,行也就这样了,然后接下来呢,诶我们其实还得去指定它,这个指定它的同时呢,其实就可以赋值了,所以都写到这儿了,那接下来你要写的话呢,安卓就该这样写了哈杨辉,比如这就是第一行了,第一行你去new一个in的行,第一行就一个元素,然后呢,接着是第二行。第二行的话呢,有俩元素,第三行有仨元素,写着写着有十行就不乐意写了,这个是不是应该写到循环里啊。
09:04
对的啊,诶这个呢,我们把它干掉,写到一个for循环,Int I等于零,I小于阳,灰点length。哎,佳佳。这样然后呢,我们把这个代码呢放进去。放进去呢,这个位置就别写零了,对,就是I Di行,I从零开始,零开始,然后这个位置写I加一吧,嗯,注意别写错了啊,不能写I第一行有一个元素啊,I加一,好这呢我们就算是给它这个通过一个循环的方式,如果你这是十,这十行呢,就搭起来了,那搭起来以后,这时候我们要是变力的话呢,有数据了吧。这个有没有数据,指的就是我现在运行的话,能出来效果不全是零呗。
10:05
杨辉,哎。点烂节加加。这呢我们out,我把这个换行呢先去掉。这个位置我们写上杨辉哎接哎这块呢,我加上一个空格吧,这样然后这个内存放完以后加一个换行。好,这呢就是个便利啊,咱们考试也考了,那下边跑一下理解吧,对啊,这块咱们不是每一行把这个框呢先搭起来了啊,那下一步呢,就是关键的给每一个位置的元素进行赋值了,这个我们是2.1,那西安呢,它比较特别的就是这个规律呢,它只适用于非守墨元素哈,咱们是不是把手墨元素先附上呀,给啊守墨元素复制,这个比较简单。嗯,对,我们每造一行,是不是这一行就有一个首元素,有个末元素啊,嗯,对,那很显然呢,就是洋灰每行的首元素就是它,哎,负值为一,那每行的末元素是多少呢?
11:17
I还是I加一啊,I就是I。体会一下就知道了。随便找一行这个吧,这是I等于0123 I等于三,这个阶的角标是不是也是三对,就是I跟街相等啊,这不就是这个位置吗?哎,这也是一,这两个呢,你也可以写成一行这样,哎,因为它的赋值呢,都是一,这要连续赋值。行,那敷完以后我们看一下效果,哎,这不这个框就打出来了。比较简单,目前啊,那框搭起来以后呢,下边我们开始给这些里边这个零的位置呢去赋值。啊,连续赋值的话呢,是不是从这一行才开始啊,那这个呢,属于这个I等于二的时候啊,I等于二的时候啊,所以这块你可以首末元素下边呢,就是2.2给每行的是非首末元素复制。
12:20
哎,我们呢,可能要加一个if了啊,说当这个I呢,大于等于二的时候,或者大于一的时候,哎,我们来考虑呢,给这个叫守末元素去赋值,那守墨元素赋值。光写一个他呢不行,这哪有所谓的接呢,接都没定义过哈啊,那这里边儿你想想这个怎么写。怎么写啊?我现在呢,给这里边儿这个零去赋值,人家这个每一行是不是可能有很多个零。那你这里边是不是又得写一个for循环了啊,这个for循环是不是就来控制这里边这个列叫接呀,哎,对啊,所以我for in一个接从几开始写啊,你是不是从第二列开始复啊。
13:18
第二列这写一呗,然后接小于多少,这是我们的Di行啊,Di行写写啊第行我现在要写的是不是应该是这一行有几个列呀,你是不是应该写的是他呀,应该是。你能写I吗?别写I啊,我们是不是这一行,你找它的长度啊。你要写也是跟他相关的吧。别写啊。别写,哎,你现在这不是我要找的,是这里边这个阶,你得看这一行有这一行有几个,这一行有几个,这不就是用这个LS来刻画的吗?是吧?啊这样写哈,但是要这样写的话呢,这我是不是就能接能到最后一个元素了,咱不是不让它到最后一个元素吗。
14:15
非墨元素,所以减个一,然后呢接加加一下理解吧,好,这呢是从第二个元素开始到倒数第二个元素结束,那在这样一段范围之内的数据满足这样的一个关系式。杨辉,把这个名调一下,这不就完事了吗?哎,我们的第行第接列的这个元素呢,就等于它上边的这个和上边左边的这个的和。啊,然后呢,这不我们通过这个内存复循环,它就把Di这一行的,诶非首末的这几个这不就都附上了,然后呢,你这个付完以后呢,这个就出去了,出去以后呢,这个再加加,这不还是下一行吗?这不就这样写。
15:12
就是我们这个操作呢,其实是可以写到这个for循环里的,因为你每提供一行,我这一行的数据就都知道了,就都按这样付,然后I在加加一下,然后下一行先拧完以后呢,我再去给这一行复制啊,就这种啊好执行看一下。OK,哎,这不就搞定了吗?就这样呗。哎,这就做完了,就啊这个题做完了,这里边儿呢,还有一个可以优化的一个小点哈,我说呀,这个位置其实可以去掉。这去掉了,这个就往前移一下啊。这个能去掉,看看为啥。
16:01
先跑一下一样是吧,为啥能去呢?哎,对,就是你这要不去的话呢,也就意味着当I是零,I是一的时候呢,也会走这个是吧,当I是零的时候呢,你这个长度是一一减一是零了,它这个循环也进不去啊。I1的时候呢,这个循环也进不去,其实自然而然的是不是就屏蔽掉了那个前两行了,对,所以说这个呢,呃,把这个if去掉也行不去呢,也没事,从这个执行效率上来讲,其实没什么差别啊,只是说呢,你这个少写一行代码而已。行了,这道题呢,我们就写完了,哎,大家呢,体会一下这个问题啊。好。
我来说两句