首页 > 试题广场 >

杨辉三角

[编程题]杨辉三角
  • 热度指数:10953 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}杨辉三角形,又称帕斯卡三角形,第 i+1 行是二项式展开 (a+b)^i 的系数。
\hspace{15pt}三角形中任意元素等于上一行同列元素与上一行前一列元素之和。
\hspace{15pt}下面给出杨辉三角形的前 4 行:

\begin{matrix}<br />1\\<br />1 & 1\\<br />1 & 2 & 1\\<br />1 & 3 & 3 & 1<br />\end{matrix}

\hspace{15pt}给定正整数 n,请输出杨辉三角形的前 n 行。

输入描述:
\hspace{15pt}在一行输入一个整数 n \left(1 \leqq n \leqq 34\right)


输出描述:
\hspace{15pt}输出杨辉三角形的前 n 行。每一行从该行第一个元素开始,依次输出;每两个数之间用一个空格分隔。请不要在行末输出多余的空格。
示例1

输入

4

输出

1
1 1
1 2 1
1 3 3 1

说明

n=4 时,杨辉三角形的前 4 行如上所示。
示例2

输入

1

输出

1

说明

n=1 时,杨辉三角形只有第 1 行,元素为 1
#include <stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    int a[n+1][n+1];
    for(int i=0;i<n;i++)
    {
        a[i][i]=1;
        a[i][0]=1;
        for(int j=0;j<=i;j++)
        {
            if(j>0&&j<i)//这个限制条件可好的很啊
            {
                a[i][j]=a[i-1][j]+a[i-1][j-1];
            }
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
并没有太多用得着解释的,就是之前没有初始化数组,如果直接用n[i-1][j-1]+n[i-1][j]来算的话会爆出乱码;所以我加了这个限制条件,刚好能够满足题目要求。
希望我的答案对您有所帮助,欢迎留言。
发表于 2025-11-25 08:38:05 回复(0)
#include <stdio.h>
int main(){
    int n,arr[34][34];
    scanf("%d",&n);
    for(int i = 0;i<n;i++){
        for(int j = 0; j <= i;j++){
            arr[i][j]=1;
        }
    }
    for(int i = 0; i < n; i++){
        for(int j = 0; j <= i; j++){
            if(i>1 && j>0 && j<i){
                arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
            }
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
}
发表于 2025-11-17 21:45:02 回复(0)
#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    int arr[34][34] = {0};
    int i = 0;
    int j = 0;
    for(i = 0;i < n;i++)
    {
        for(j = 0;j <= i;j++)
        {
            if(j == 0)
            {
                arr[i][j] = 1;
            }
            if(j == i)
            {
                arr[i][j] = 1;
            }
            if(i >= 2 && j >= 1)
            {
                arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
            }
           

        }

    }
    for(i = 0;i < n;i++)
    {
        for(j = 0;j <= i;j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }

    return 0;
}
发表于 2025-10-14 21:07:36 回复(0)
#include <stdio.h>

int main() {
    int a;
    scanf("%d",&a);
    int con[a][a];
    for(int i =0;i<a;i++)
    {
        for(int j =0;j<=i;j++)
        {
            if(i<2)
            {
                con[i][j]=1;
            }
            else if(j==0||j==i)
            {
                con[i][j]=1;
            }
            else
            {
                con[i][j]=con[i-1][j]+con[i-1][j-1];
            }  
        }    
    }
    for(int i =0;i<a;i++)
    {
        for(int j =0;j<=i;j++)
        {
            printf("%d ",con[i][j]);
           
        }  
        printf("\n");  
    }
    return 0;
}
发表于 2025-10-09 20:33:03 回复(0)
#include <stdio.h>
int main() {
    int a;
    scanf("%d", &a);
    int arr[a],temp1[a],temp2[a];
    for(int i=0;i<a;i++)
    {
        for(int j=0;j<i+1;j++)
        {
            int out;
            if(!j) out=1;
            else if(j==i) out=1;
            else  out=temp2[j-1]+temp2[j];
            printf("%d ", out);
            temp1[j] = out;
        }
        printf("\n");
        for(int j=0;j<i+1;j++)  temp2[j]=temp1[j];
    }
    return 0;
}

发表于 2025-09-26 17:59:58 回复(0)
#include <stdio.h>
#include <stdlib.h>
int main() {
    int n;
    scanf("%d",&n);
    int **sz=(int **)malloc(n*sizeof(int *));
    for(int i=0;i<n;i++)
    sz[i]=(int *)malloc((i+1)*sizeof(int));
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<=i;j++)
        {
            if(j==0)sz[i][j]=1;
            if(i==j)sz[i][j]=1;
            if(i>j)sz[i][j]=sz[i-1][j-1]+sz[i-1][j];
            printf("%d ",sz[i][j]);
        }
       
        printf("\n");
    }
    return 0;
}
发表于 2025-07-20 15:01:44 回复(0)

问题信息

难度:
6条回答 997浏览

热门推荐

通过挑战的用户

查看代码
杨辉三角