我正在分割错误


#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
int t;
cin>>t;
while(t--)
{
    ll n, a[10000000];
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>a[i];
    for(int i=0;i<n-1;i++)
    {
        int flag=0;
        for(int j=i+1;j<n;j++)
        {
            if(a[j] > a[i])
            {
                cout<<a[j]<<" ";
                flag=1;
                break;
            }
        }
        if(flag==0)
         cout<<"-1 ";
}
cout<<"-1n";
}
return 0;
}

为什么我使用此代码会得到细分故障?代码中有什么错。据我所知,代码没有错。请解释错误...

a[10000000]可能太大而无法具有自动存储持续时间。将1MB的顺序视为极限。

修复程序是用

替换循环的前两行
std::size_t n; // using a macro is a bad idea
std::cin >> n; // no professional programmer uses `using namespace std`
std::vector<long long/*using a macro is a bad idea*/> a(n);

请注意,如果n太大,您应该处理std::vector结构的任何例外。

相关内容

  • 没有找到相关文章