每日算法 ---- 杨辉三角

杨辉三角

  1. 每个数等于它上方两数之和。
  2. 每行数字左右对称,由1开始逐渐变大。
  3. 第n行的数字有n项。
  4. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
  5. 第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。
  6. 每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。
  7. (a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。
  8. 将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n>1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数。
  9. 将第n行的数字分别乘以10^(m-1),其中m为该数所在的列,再将各项相加的和为11^(n-1)。11^0=1,11^1=1x10^0+1×10^1=11,11^2=1×10^0+2x10^1+1x10^2=121,11^3=1x10^0+3×10^1+3x10^2+1x10^3=1331,11^4=1x10^0+4x10^1+6x10^2+4x10^3+1x10^4=14641,11^5=1x10^0+5x10^1+10x10^2+10x10^3+5x10^4+1×10^5=161051。
  10. n行数字的和为2^(n-1)。1=2^(1-0),1+1=2^(2-1),1+2+1=2^(3-1),1+3+3+1=2^(4-1),1+4+6+4+1=2^(5-1),1+5+10+10+5+1=2^(6-1)。
  11. 任一对角线上数字的和等于其向右拐弯,拐角上的数字。1+1=2,1+1+1=3,1+1+1+1=4,1+2=3,1+2+3=6,1+2+3+4=10,1+3=4,1+3+6=10,1+4=5。
  12. 将各行数字左对齐,其右上到左下对角线数字的和等于斐波那契数列的数字。1,1,1+1=2,2+1=3,1+3+1=5,3+4+1=8,1+6+5+1=13,4+10+6+1=21,1+10+15+7+1=34,5+20+21+8+1=55。


 /**
     * 打印杨辉三角
     *  是 二项式系数 在三角形中的一种几何排序
     */
    public function test()
    {
        echo "<pre>";
        $arr = [];
        $N = 10; //打印几层
        for($i = 0; $i<$N; $i++) { //几层
            for($m = 0;$m<$N-$i;$m++) {
                print_r(' ');
            }
            for($j = 0; $j<=$i; $j++)
            {
                if((0 == $j)||($i == $j)){
                    $arr[$i][$j] = 1;
                }else{
                    $arr[$i][$j] = $arr[$i-1][$j] + $arr[$i-1][$j-1];
                }
                print_r($arr[$i][$j]);
            }
            print_r("\n");
        }
    }

原文地址:https://www.cnblogs.com/zhy7blog/p/11247696.html

时间: 2024-08-30 17:03:08

每日算法 ---- 杨辉三角的相关文章

算法——杨辉三角

//考验基础数组与循环知识 #include <iostream>using namespace std; int main(){ int a[35][35]; int n; cin>>n; for(int i=1;i<=n;i++)//最左与最右 {a[i][1]=1;        //最左a[i][i]=1;         //最右 } for(int i=3;i<=n;++i)//一二行已赋值,从第三开始 for(int j=2;j<i;++j) {a[

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

【LeetCode-面试算法经典-Java实现】【119-Pascal&#39;s Triangle II(帕斯卡三角形(杨辉三角)II)】

[119-Pascal's Triangle II(帕斯卡三角形(杨辉三角)II)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [1,3,3,1]. Note: Could you optimize your algorithm to use only O(k) extra

算法基础_递归_求杨辉三角第m行第n个数字

问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好): import java.util.Scanner; /** * 求杨辉三角第m层第n个数字 * @author Administrator * */ public class Demo05 { public static int f(int m,int n) { if(n==0)return 1

算法:杨辉三角(Pascal&#39;s Triangle)

一.杨辉三角介绍 杨辉三角形,又称帕斯卡三角形.贾宪三角形.海亚姆三角形.巴斯卡三角形,是二项式系数的一种写法,形似三角形,在中国首现于南宋杨辉的<详解九章算法>得名,书中杨辉说明是引自贾宪的<释锁算书>,故又名贾宪三角形.在那之前,还有更早发现这个三角的波斯数学家和天文学家,但相关的内容没有以图文保存下来,所以中国的数学家对此研究有很大贡献. 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 3

C语言之基本算法31—杨辉三角

//二维数组! /* ================================================================== 题目:打印杨辉三角 1 1   1 1   2   1 1   3   3   1 1   4   6   4   1 1   5  10  10   5   1 1   6  15  20  15   6   1 ............... ================================================

杨辉三角js算法

上个星期,小熙有幸去艺龙网面试web前端开发职位,技术经理在面试中,给小熙出了一道数学题.学名杨辉三角.用函数计算出第n行,第m个数值是多少.直接看效果吧 让我用函数算出,第n行,第m个数字是什么.作为理科生的小熙,虽然脑子也灵光,可是.这么久不做数学题,况且还是用函数做出来,当时脑瓜一翁,完蛋了啦,game over了.不会... 回来后,我找到难点,其实,最大的难点在于,我不会递归.这一直是我的一个痛点.呵呵了...于是,先了解,递归,,我总感觉,自己经常淹没的递归里,无法脱身...用早就忘

算法练习四:打印杨辉三角

规律:1.第n层的总和等于2的n次幂:     2. 从第三层开始数字等于它上方的两个数字之和:     3.每一行的长度等于 n ,循环 n 次: function text(n){ var arr = []; //结果 var arr1 = []; //中转 //生成杨辉三角数据 for (var i = 1; i <= n; i++) { arr1 = [1]; //第一个值为"1" for(var j = 1; j < i; j++){ if(j == i-1){

matlab算法之杨辉三角

% 帕斯卡三角形 % 杨辉三角,又名 贾宪三角形 global N; N=12; paint(); ---------------------------------------------------------- function []=paint() global N; N=12; for n=0:N; for r=0:n; if(r==0) for i=0:N-n fprintf('  '); end else fprintf('  '); end fprintf('%3d',combi