蓝桥杯2021年第十二届 杨辉三角形

个人想法是,通过for循环,将杨辉三角叠加遍历出来,个数,通过sum+j(算出遍历的几行的总数字再加上本行的第几列)
问题相关代码,请勿粘贴截图
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{int a[10000][10000];
int i,j;
int N,sum=0;
int b[10000];
scanf("%d",&N);


for(i=0;i<100;i++)
{
    b[i]=i+1;
    
}
a[0][0]=1;
a[1][0]=1;a[1][1]=1;
for(i=2;i<100;i++)
{
    for(j=0;j<i+1;j++)
{
    if(j==0) a[i][j]=1;
    else if(j==i) a[i][j]=1;
    else
    {
        a[i][j]=a[i-1][j-1]+a[i-1][j];
    }
}
}


for(i=0;i<100;i++)
{
    for(j=0;j<i+1;j++)
    {    

        if(a[i][j]==N)
        {
            printf("%d",sum+j+1);
        }
            sum+=b[i];
    }
}


    
    
    
    return 0;
}
运行结果及报错内容

没有输入的画面,直接跳出程序,不知道是哪里出了问题,杨辉三角,单独测试过,是可以正常显示的

杨辉三角这个我会的,我的问题点在于,为什么没有输入的环节,程序就直接结束了

原因是 int a[10000][10000];数组太大了,程序申请不到这么大空间,直接崩溃掉了。
一是将数组大小减小,二是将这个数组放到main函数外面,变为全局变量。全局变量支持更大的数组空间申请

参考:

#include <stdio.h>

void yhtriangle(int yanghui[10][10]){
    int i,j;
    for(i=0;i<10;i++)
    {
        for(j=0;j<=i;j++)
        {
            printf("%d ",yanghui[i][j]);
        }
        printf("\n");
    }
}
int main()
{
    int i,j;
    int yanghui[10][10];
    for(i=0;i<10;i++)
    {
        yanghui[i][0]=1;
        yanghui[i][i]=1;//杨辉三角形每行第一列和最后一列数据都为1 
        for(j=1;j<i;j++)
        {
            yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j];//每个数字等于肩上两数字之和 
        }
    }
    //打印
    yhtriangle(yanghui);
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632