1 条题解

  • 0
    @ 2025-8-24 22:13:51

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar hensier
    **

    搬运于2025-08-24 22:13:51,当前版本为作者最后更新于2020-03-15 21:56:50,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    杨辉三角主要具有以下性质:

    • 每一行的第一个元素和最后一个元素均为 11
    • ii 行 第 jj 列(i>1,jii>1,j \le i)的元素等于第 i1i-1 行第 j1j-1 列和第 i1i-1 行第 jj 列之和。

    转换成数学语言:

    ai,1=ai,i=1a_{i,1}=a_{i,i}=1 ai,j=ai1,j1+ai1,ja_{i,j}=a_{i-1,j-1}+a_{i-1,j}

    利用递推,我们可以得到代码:

    #include<bits/stdc++.h>
    using namespace std;
    int n,a[21][21];
    int main()
    {
        scanf("%d",&n);
        a[1][1]=1;//初始化
        for(int i=2;i<=n;i++)
            for(int j=1;j<=i;j++)
                a[i][j]=a[i-1][j-1]+a[i-1][j];//进行计算
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=i;j++)printf("%d ",a[i][j]);//输出
            printf("\n");//换行
        }
        return 0;
    }
    

    Python 代码:

    n = int(input()) # 输入n,类型为整数
    a = [[0 for i in range(0, n + 1)] for j in range(0, n + 1)] # 建立数组
    a[1][1] = 1 # 标记a[1][1]的值为1
    for i in range(2, n + 1): # range(a,b)表示在[a,b)区间,不包括b
        for j in range(1, i + 1):
            a[i][j] = a[i-1][j-1] + a[i-1][j] # 递推
    for i in range(1, n + 1):
        for j in range(1, i + 1):
            print(a[i][j], end = ' ') # end=''可以在输出内容后多输出一个字符串,不写end则默认为换行
        print('') # 输出空,因为默认输出后换行,所以达到了换行作用
    
    • 1

    信息

    ID
    4710
    时间
    1000ms
    内存
    125MiB
    难度
    1
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者