HDU-2032 杨辉三角
HDU-2032 杨辉三角
题目:
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Input
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
Output
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
Sample Input
2 3
Sample Output
1
1 1
1
1 1
1 2 1
#include<iostream>
#include<cstdio>
using namespace std;
#define N 35
int a[N][N];
int main()
{
int n,k,b;
while(scanf("%d",&n) != EOF)
{
for(int i = 0;i < n;i++)
{
for(int j = 0;j < n;j++)
{
a[i][j] = 0;
}
}
for(int i = 1;i <= n;i++)
{
if(i == 1)
{
a[1][1] = 1;
cout << a[1][1] << endl;
}
else
{
a[i][1] = 1;
cout << a[i][1];
for(int j = 2;j <= i;j++)
{
b = a[i - 1][j - 1] + a[i - 1][j];
cout << " "<< b;
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
cout << endl;
}
}
cout << endl;
}
return 0;
}
注意事项:
1.这道杨辉三角题是一道找规律的题,规律就是:从第二行开始以后的每一行数,除了每一行的第一个数永远为1之外,后面的元素的值都是肩上两个元素之和(如果把整个写成金字塔的形状),简单来说现在这个元素的值就等于上一行这一列这个元素和上一行这一列前一个位置的元素之和.如果把整个杨辉三角的每个数字都看成二维数组的元素,那么当行数大于1的时候就有公式: a[i][j] = a[i - 1][j - 1] + a[i - 1][j](i代表这一行行数,j代表这一行的列数)。
2.每次重新输入n之后需要对二维数组进行清零操作。
3.每次输出第一行的时候只要输出1即可,并且要保存这个元素的值。
运行结果: