http://acm.hdu.edu.cn/showproblem.php?pid=2032
题目大意
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
Sample Input
2
Sample Output
1
1 1
1
1 1
1 2 1
方法与总结
- 算出杨辉三角用二维数组保存
- 输出的时候注意是每层的两个数之间有空格隔开,而每层最后是没有空格的,如果有空格,提交的时候则会出现CE。
代码
#include<iostream>
using namespace std;
void Yanghui(int n)
{
int **p=new int*[n];
for(int i=0;i<n;i++)
p[i]=new int[i+1];
p[0][0]=1;
for(int i=0;i<n;i++)
{
p[i][0]=1;
for(int j=1;j<i;j++)
{
p[i][j]=p[i-1][j-1]+p[i-1][j];
}
p[i][i]=1;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<i+1;j++)
{
if(j==0)
cout<<p[i][j];
else
cout<<" "<<p[i][j];
}
cout<<endl;
}
cout<<endl;
}
int main()
{
int n;
while(cin>>n)
Yanghui(n);
return 0;
}