楊輝三角,又叫帕斯卡三角形,是一個(gè)三角形矩陣,其頂端是 1,視為(row0).第1列(row1)(1&1)兩個(gè)1,這兩個(gè)1是由他們上頭左右兩數(shù)之和 (不在三角形內(nèi)的數(shù)視為0).依此類(lèi)推產(chǎn)生第2列(row2):0+1=1;1+1=2;1+0=1.第3列(row3):0+1=1;1+2=3; 2+1=3;1+0=1. 循此法可以產(chǎn)生以下諸列。

2016-02-18_56c5c49a77924.jpg.png
分析:(a+b)^n的展開(kāi)式中的各項(xiàng)系數(shù)依次對(duì)應(yīng)楊輝三角的第(n+1)行中的每一項(xiàng)。
由此可通過(guò)排列組合式來(lái)求得其對(duì)應(yīng)的每一項(xiàng)系數(shù),即楊輝三角的對(duì)應(yīng)位置的值。
組合公式為:c(n,m)=p(n,m)/m!=n!/((n-m)!*m!)
也可利用隊(duì)列來(lái)做,在教科書(shū)上有范例,但較數(shù)學(xué)方法復(fù)雜;
#include<stdio.h>
#define SIZE_TRIANGLE 12
//利用組合公式計(jì)算每一個(gè)數(shù)
int GetResult(int row,int col)
{
double multiple=1;
int result=0;
for(int i=1;i<=col;i++)
{
multiple*=(double)(row-i+1)/i;
}
result=(int)multiple;
return result;
}
int main()
{
for(int i=0;i<=SIZE_TRIANGLE;i++)
{
for(int j=0;j<=SIZE_TRIANGLE-i;j++)
{
printf(" ");
}
for(int k=0;k<=i;k++)
{
printf("%3d ",GetResult(i,k));
}
printf("\n");
}
return 0;
}