杭电oj 2032

题目链接:点我

思路:

(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;

}

总结:题目不是很难,只要找到规律就可以很容易的,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容