问题描述:
按要求输入如下格式的杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
最多输出10层
输入:
输入只包含一个正整数n,表示将要输出的杨辉三角的层数。
输出:
对应于该输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开
样例输入:
5
样例输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
解题思路:
由于题中说最多10行,所以可以先创建一个10*10的二维数组,再由杨辉三角公式 C(n+1,i)=C(n,i)+C(n,i-1)即每个数字等于上一行的左右两个数字之和,由该性质初始化杨辉三角,然后设置读入行数,再输出到指定行数位置停止即可。
代码展示(c++语言):
#include<cstdio>
int main(void)
{
int a[10][10]={0},line,row,i; //初始化数组、行数、列数、待输入i;
row=0;
for(line=0;line<10;line++)
{
a[line][row]=1;
a[line][line]=1; //对角线上为1
}
for(line=2;line<10;line++)
{
for(row=1;row<line;row++)
{
a[line][row]=a[line-1][row]+a[line-1][row-1];
}
}
scanf("%d",&i);
for(line=0;line<i;line++)
{
for(row=0;a[line][row]!=0;row++)
{
printf("%d ",a[line][row]);
}
printf("\n");
}
return 0;
}
不足之处:
换行符的处理不太完美