您的位置:首页 > 其它

建立和打印杨辉三角

2015-04-29 09:18 134 查看
杨辉三角的计算公式:a[i][j] = i! / (j! * (i-j)!)

公式说明:i(行数,从0开始),j(第i行的第j个元素,从0开始)

思路:先创建一个动态数组,然后赋值并打印即可。

存在问题:int** CreateYaHuiSanJiao(int col)二维指针未释放,不知函数结束后系统会不会自动释放?



#include <iostream>
using namespace std;

//求n的阶乘
int fn(int n)
{
if (0 == n)
return 1;
int result = 1;
for (int i = 1; i <= n; ++i)
result *= i;
return result;
}

//创建n行的杨辉三角
int** CreateYaHuiSanJiao(int col)
{
//开辟二维数组并分配空间
int i,j;
int** pa = new int*[col];
for (i = 0; i < col; ++i)
pa[i] = new int[col];

//初始化
for ( i = 0; i < col; ++i)
for ( j = 0; j < col; ++j)
pa[i][j] = 0;

for ( i = 0; i < col; ++i)
for ( j = 0; j < i + 1; ++j)
pa[i][j] = fn(i) / (fn(j) * fn((i-j)));

//释放内存空间
//for (i = 0; i < col; ++i)
// delete[] pa[i];
//delete[] pa;
return pa;
}

//打空格
void pSpace(int n)
{
if (n <=0 )
return;
cout << " ";
--n;
pSpace(n);
}

int main()
{
int** a = NULL;
int col = 14;
int i, j;
a = CreateYaHuiSanJiao(col);

//打印杨辉三角
for ( i = 0; i < col; ++i)
{
pSpace(col - i);
for ( j = 0; j < col; ++j)
{
if (a[i][j] != 0)
cout << a[i][j] << " ";
}
cout << endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: