标签:
/*
打印出杨辉三角形
输入:n
输出:n行
样例:如下图
输入:4
输出:
1
1 1
1 2 1
1 3 3 1
输入:6
输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
问题分析:
杨辉三角的一些基本性质:
i、 每个数等于它上方两数之和.
ii、 每行数字左右对称,由1开始逐渐变大.
iii、第n行的数字有n项.
...
1、根据性质i,可以用二维数组(n行,n+(n-1)列)储存杨辉三角(含有空格)
2、除了第一行的1外,其余位置的值均可由性质i算出(注意是否有越界)
代码实现如下:
*/
/* 为了方便,空出首行首列 */
#include <iostream>
using namespace std;
int main()
{
int i,j,n;
cin>>n;
int triangle[n+1][2*n+1]; // 为了计算方便 给二维数组空出首行首列以及尾列
for(i=0;i<=n;i++) // 对整个二维数组初始化为0
for(j=0;j<=2*n;j++)
triangle[i][j] = 0;
triangle[1][1] = 1; // 杨辉三角首元素(1,1)为1
for(i=1;i<=n;i++) // 计算杨辉三角各位置的值
for(j=1;j<=2*n-1;j++)
if(i==1 && j==1) continue;
else triangle[i][j] = triangle[i-1][j-1]+triangle[i-1][j];
for(i=1;i<=n;i++) // 打印
{
for(j=1;j<=2*n-1;j++)
{
if(triangle[i][j]==0)
cout<<‘ ‘;
else
cout<<triangle[i][j]<<‘ ‘;
}
cout<<endl;
}
return 0;
}
标签:
原文地址:http://blog.csdn.net/madbam_boo/article/details/51344936