首页 > 试题广场 >

杨辉三角

[编程题]杨辉三角
  • 热度指数:21647 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。


输入描述:
第一行包含一个整数数n。 (1≤n≤30)


输出描述:

包含n行,为杨辉三角的前n行,每个数输出域宽为5。

示例1

输入

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 Yangh(int n, int m)
{
    if(n == m || m == 0)
    {
        return 1;
    }
    return Yangh(n - 1, m) + Yangh(n - 1, m - 1);
}

int main() 
{
    int n = 0;
    int i = 0;
    int j = 0;

    scanf("%d", &n);
    
    for(i = 0; i < n; i++)
    {
        for(j = 0; j <= i; j++)
        {
            printf("%5d", Yangh(i, j));
        }
        printf("\n");
    }

    return 0;
}

发表于 2024-03-20 18:44:37 回复(0)
#include <stdio.h>
int main() {
    int arr[30][30] = {0};
    int i = 0;
    int j = 0;
    int n = 0;
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        for (j = 0; j <= i; j++) {
            if (i == j)
                arr[i][j] = 1;
            if (j == 0)
                arr[i][j] = 1;
            if (i > 1 && j > 0)
                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("%5d", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

编辑于 2024-01-24 23:24:27 回复(0)
#include <stdio.h>

int main() {
    int n,a[31][31]={0},b=1;
    scanf("%d",&n);
    a[1][1]=1;
    int row=2,col=1;
    while(b++<n){
        for(int i=col;i<=b;i++)a[row][i]=a[row-1][i-1]+a[row-1][i];
        row++;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++)printf("%5d",a[i][j]);
        printf("\n");
    }
    return 0;
}

发表于 2024-01-15 18:27:39 回复(0)
#include <stdio.h>

int main()
{
    int n;
    int arr[100][100];
    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 = 1;j<i;j++)
        {
            arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
        }
    }
    //打印
    for(int i = 0;i<n;i++)
    {
        for(int j = 0;j<=i;j++)
        {
            printf("%5d",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}


编辑于 2023-12-09 15:52:04 回复(0)
#include <stdio.h>
int main()
{
    int n;
    scanf("%d ",&n);
    int arr[n][n];
    int i;
    for(i=0;i<n;i++)
    {
        int j;
        for(j=0;j<=i;j++)
        {
            if(j==0||j==i)
            {
                arr[i][j] = 1;
            }
            else {
            arr[i][j] = arr[i-1][j] + arr[i-1][j-1];//正好是一个直角三角形
            }
            printf("%5d",arr[i][j]);//域宽为5
        }
        printf("\n");
    }
    return 0;
}

发表于 2023-11-13 09:56:38 回复(0)
#include <stdio.h>

int main()
{
    int n =0;
    scanf("%d",&n);
    int arr[1000][1000];
    for(int i=0;i<n;i++)//行数
    {
        for(int j=0;j<=i;j++)//项数
        {
            if(i==j||j==0)
            {
                arr[i][j]=1;
            }
            else
            {
                arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<=i;j++)
        {
            printf("%5d",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}
发表于 2023-08-06 15:12:02 回复(0)
#include <stdio.h>

int main()
{
    int n=0;
    int i=0;
    int j=0;
    scanf("%d",&n);
    int arr[n][n];
        for(i=0;i<n;i++)
        {
            for(j=0;j<=i;j++)
            {
                if(j==0)
                {
                    arr[i][j]=1;
                }
                else if(i==j)
                {
                    arr[i][j]=1;
                }
                else 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("%5d",arr[i][j]);
            }
            printf("\n");
        }
   
    return 0;
}
发表于 2023-06-06 09:04:32 回复(0)
#include <stdio.h>
int main()
{
    int arr[31][31] = {0};
    int n = 0;
    scanf("%d",&n);
    arr[1][1] = arr[2][1] = arr[2][2] = 1;
    for(int i = 3;i<=n;i++)
    {
        for(int j = 1;j<=i-1;j++)
        {
            if(j==1) arr[i][j] = 1;
            else
                arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
        }
        arr[i][i] = 1;
    }
    for(int i = 1;i<=n;i++)
    {
        for(int j = 1;j<=i;j++)
        {
            printf("%5d",arr[i][j]);
        }
        puts("");
    }
    return 0;
}

发表于 2023-03-24 10:40:56 回复(0)
#include<stdio.h>
int main() {
    int num = 0, arr[30][30] = {0};
    scanf("%d", &num);
    for (int i = 0; i < num; i++) {
        for (int j = 0; j < num; j++) {
            if (i >= j) {
                if (j == 0 || i == j)
                    arr[i][j] = 1;
                else
                    arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
            }
            if (arr[i][j] != 0)
                printf("%5d", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

发表于 2022-08-06 16:30:19 回复(0)
#include<stdio.h>
int main(){
    int n,i,j;
    scanf("%d",&n);
    int a[n][n];
    for(i=0;i<n;i++){
        for(j=0;j<=i;j++){
            if(j==0||i==j){
                a[i][j]=1;
            }
            else {
                a[i][j]=a[i-1][j-1]+a[i-1][j];
            }
        }
    }
    for(i=0;i<n;i++){
        for(j=0;j<=i;j++){
            printf("%5d",a[i][j]);
        }
        printf("\n");
    }
}
发表于 2022-07-26 13:13:42 回复(0)
#include <stdio.h>
int C(int a, int b){
    long a_f = 1, b_f = 1, b_a_f = 1;
    for(int i = 1; i <= a; i++)
        a_f *= i;
    for(int i = 1; i <= b; i++)
        b_f *= i;
    for(int i = 1; i <= b-a; i++)
        b_a_f *= i;
    return b_f/a_f/b_a_f;
}

int main(){
    int n;
    scanf("%d", &n);
    for(int i = 0; i < n; i++){
        for(int j = 0; j < i+1; j++){
            printf("%5d", C(j, i));
        }
        printf("\n");
    }
    return 0;
}

发表于 2022-07-21 22:31:15 回复(0)
#include <stdio.h>

int main(){
    int n, i, j, arr[30][30];
    scanf("%d", &n);
    for(i = 0; i < n; i++){
        for(int j = 0; j < i + 1; j++)
    	   arr[i][j] = (j == 0 || j == i)?1 : arr[i-1][j]+arr[i-1][j-1];
    }
    for(i = 0; i < n; i++){
        for(j = 0; j < i + 1; j++)
            printf("%5d", arr[i][j]);
        printf("\n");
    }
    return 0;
}

发表于 2022-06-13 14:57:53 回复(0)
#include<stdio.h>
int main()
{
    int n =0;
    int arr[30][30]={0};
    scanf("%d",&n);
    for(int i=0 ;i<n;i++)
    {
        for(int j=0;j<=i;j++)
        {
            if(j==0||j==n-1)
            {
                arr[i][j]=1;
            }
            else
            {
                arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
            }
        }
    }
         for(int i=0 ;i<n;i++)
        {
            for(int j=0;j<=i;j++)
            {
                printf("%5d",arr[i][j]);
            }
             printf("\n");
         }
    return 0;
}

发表于 2022-05-18 11:05:38 回复(0)
//杨辉三角特性:两条斜边都是由数字1组成,其余的数则是等于上一行左右两个数字之和
#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    int arr[30][30];
    int i = 0;
    for(i = 0;i<n;i++)
    {
        int j = 0;
        for(j = 0;j<=i;j++)
        {
            if(j == 0 || i == j)
                arr[i][j] = 1;
            else 
                   arr[i][j] = arr[i-1][j-1]+arr[i-1][j];             
        }
    }
    
    for(i = 0;i<n;i++)
    {
        int j = 0;
        for(j = 0;j<=i;j++)
            printf("%5d",arr[i][j]);
        printf("\n");
    }
    return 0;
}

发表于 2022-05-10 22:29:36 回复(0)
#include<stdio.h>

int main()
{
    int arr[30][30] = { 0 };
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            if (j == 0 || j == i )
            {
                arr[i][j] = 1;
            }
            else if(j>=1&&j<i)
            {
                arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
            }
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            printf("%5d", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}
发表于 2022-05-10 09:45:27 回复(0)
#include<stdio.h>
int main()
{
    int n, i, j;
    scanf("%d", &n);
    int arr[30][30] = { 0 };
    for (i = 0; i <n; i++)
    {
        for (j = 0; j <=i; j++)
        {
            if (j == 0)
                arr[i][j] = { 1 };
            else if (j == i)
                arr[i][j] = { 1 };
            else
                arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
        }
    }
    for (i = 0; i <=n; i++)
    {
        for (j = 0; j <=i; j++)
        {
            if (arr[i][j] != 0)
            {
                printf("%5d", arr[i][j]);
            }
        }
        printf("\n");
    }
    return 0;
}

发表于 2022-05-01 11:27:13 回复(0)
#include<stdio.h>
int main()
{
    int arr[30][30]={0};
    arr[0][0]=1;
    int i=0;int ret=0;
    scanf("%d",&i);
    for(int n=1;n<=i;n++)
    {
        for(int m=1;m<=n;m++)
        {
          arr[n][m]=arr[n-1][m-1]+arr[n-1][m]; 
          printf("%5d",arr[n][m]);
        }printf("\n");
    }
    return 0;
}

发表于 2022-03-20 14:50:23 回复(0)

问题信息

上传者:牛客309119号
难度:
29条回答 5321浏览

热门推荐

通过挑战的用户

查看代码