首页 > 代码库 > 杨慧三家算法c#代码
杨慧三家算法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
杨慧三家算法c#代码