#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
结构的任何例外。