杨慧三家算法c#代码

杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。

前提:端点的数为1.

1、每个数等于它上方两数之和。

2、每行数字左右对称,由1开始逐渐变大。

3、第n行的数字有n项。

4、第n行数字和为2n-1。

5、第n行的第m个数和第n-m+1个数相等,即C(n-1,m-1)=C(n-1,n-m)(组合数性质

之一)[1] 

6、每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即。[2] 

7、第n行的m个数可表示为C(n-1,m-1)(n-1下标,m-1上标),即为从n-1个不同

元素中取m-1个元素的组合数。(见右图)

组合数计算方法:C(n,m)=n!/[m!(n-m)!]

8、(a+b)^n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。[3] 

9、将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n>1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数。

10、将各行数字相排列,可得11的n-1(n为行数)次方:1=11^0; 11=11^1; 121=11^2……;细心的人可能会发现当n≥5时会不符合这一条性质,其实是这样的:把第n行的最右面的数字"1"放在个位,然后把左面的一个数字的个位对齐到十位... ...,以此类推,把空位用“0”补齐,然后把所有的数加起来,得到的数正好是11的n-1次方。以n=11为例,第十一行的数为:1,10,45,120,210,252,210,120,45,10,1;

代码如下:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace YHSJ

{

    class Program

    {

        static void Main(string[] args)

        {

            int[][] Array_int = new int[10][];//定义一个10行的二维数组

            //向数组中记录杨辉三角形的值

            for (int i = 0; i < Array_int.Length; i++)//遍历行数

            {

                Array_int[i] = new int[i + 1];//定义二维数组的列数

                for (int j = 0; j < Array_int[i].Length; j++)//遍历二维数组的列数

                {

                    if (i <= 1)//如果是数组的前两行

                    {

                        Array_int[i][j] = 1;//codego.net将其设置为1

                        continue;

                    }

                    else

                    {

                        if (j == 0 || j == Array_int[i].Length - 1)//如果是行首或行尾

                            Array_int[i][j] = 1;//将其设置为1

                        else

                            Array_int[i][j] = Array_int[i - 1][j - 1] + Array_int[i - 1][j];//根据杨辉算法进行计算

                    }

                }

            }

            for (int i = 0; i < Array_int.Length; i++)//输出杨辉三角形

            {

                for (int j = 0; j < Array_int[i].Length; j++)

                    Console.Write("{0}\t", Array_int[i][j]);

                Console.WriteLine();

            }

            Console.ReadLine();

        }

    }

}


本文出自 “飞飞的大作” 博客,请务必保留此出处http://9580476.blog.51cto.com/9570476/1608545

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。