为什么N只能在20000以内(杨辉三角形)(语言-c++)


#include
using namespace std;
const int N=1000000005;
int a[N][N];
int main()
{
    a[1][1]=1;
    int n;
    cin>>n;
    if(n==1)
    {
        cout<<1<return 0;
    }
    for(int i=2;ifor(int j=1;j<=i;j++)
        {
            a[i][j]=a[i-1][j-1]+a[i-1][j];
            if(a[i][j]==n)
            {
                cout<-1)/2+j<return 0;
            }
        }
    }
}

int a[N][N]
如果N=20000
那么数组占用内存就是420K20K=1600MB也就是1.6GB,如果你的编译器是32bit的,32bit的进程最大内存是2GB。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^