C语言解决杨辉三角问题

举报
鸣海步 发表于 2022/04/19 21:33:10 2022/04/19
【摘要】 题目描述给出 n(n≤20) ,输出杨辉三角的前 n 行。杨辉三角规则:每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大。第 n 行的数字有 n 项。前 n 行共2(1+n)n​个数。每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i−1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i...

题目描述
给出 n(n≤20) ,输出杨辉三角的前 n 行。

杨辉三角规则:

每个数等于它上方两数之和。
每行数字左右对称,由1开始逐渐变大。
第 n 行的数字有 n 项。
前 n 行共2(1+n)n​个数。
每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i−1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i−1)。
输入格式
输入小于 20 的正整数。

输出格式
按顺序输出前 n 阶杨辉三角数值,每行每个数之间用空格隔开。

输入输出样例
输入
6

输出
1 1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

说明
注意答案输出时,每一行使用换行符隔开,同一行的各个数之间用空格隔开,每行最后一个数之后不要添加空格。

#include <stdio.h>
 
int main()
{
    int i,j;
    int a[10][10];
    printf("\n");
    for(i=0;i<10;i++) {
        a[i][0]=1;
        a[i][i]=1;
    }
    for(i=2;i<10;i++)
        for(j=1;j<i;j++)
            a[i][j]=a[i-1][j-1]+a[i-1][j];
    for(i=0;i<10;i++) {
        for(j=0;j<=i;j++)
            printf("%5d",a[i][j]);
        printf("\n");
    }
}


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。