题目链接:点我
思路:
(1)一行的第一个元素是1,最后一个元素也是1。打印这种金字塔系列的可以选择用数组进行排序打印,这里选择二维数组。
(2)发现从第3行开始中间的那个2是由上面那行的两个数相加得到,这个规律对第三行以下的所有都适用,如3=2+1,6=3+3
即 a[ i ][ j ]=a[ i - 1 ][ j - 1 ]+a[ i- 1 ] [ j ];
代码如下:
#include<stdio.h>
int main() {
int n;
int a[30][30] = { 0 };
while (scanf("%d", &n) != EOF) {
printf("1\n");//输出第一行
for (int i = 1; i < n; i++) { //控制要输入的多少行
a[i][0] = 1; //把所有行的第一个和最后一个变为1
a[i][i] = 1;
printf("1 "); //输出每一行的第一个数1
for (int j = 1; j < i ; j++) { //从第三行才开始使用这个规律,
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
printf("%d ", a[i][j]);
}
printf("1\n");//输出每一行的最后一个数1
}
printf("\n");
}
return 0;
}
总结:题目不是很难,只要找到规律就可以很容易的,