gpt4 book ai didi

c++ - 为什么在此代码中出现运行时错误SIGSEGV

转载 作者:行者123 更新时间:2023-12-02 10:34:50 26 4
gpt4 key购买 nike

今天我在Codechef https://www.codechef.com/problems/CHPINTU上解决了问题,在这里我得到了运行时错误sigsegv,下面的代码是请帮助我。以下是C++代码

    while(t!=0){
int n,m;
cin>>n>>m;
int f[n],p[n];

for(int i=0;i<n;i++)
cin>>f[i];
for(int i=0;i<n;i++)
cin>>p[i];

int freq[m+1];
bool avail[m+1];
memset(avail,false,sizeof(avail));
memset(freq,-1,sizeof(freq));

for(int i=0;i<n;i++){
freq[f[i]]+=p[i];
avail[f[i]]=true;

}
int min = INT_MAX;
for(int i=0;i<=m;i++){
if(freq[i]<min && avail[i]==true){
min=freq[i];
}
}
cout<<min<<"\n";
t--;
}

最佳答案

cin>>n>>m;
int f[n],p[n];

数组的长度不能为变量。
您可以使用 vectornew
vector<int> f(n);
//or
int *f = new int[n];
//remember to delete after new

在您的代码中发现的其他错误:
memset(freq,-1,sizeof(freq));
freq[f[i]]+=p[i];

freq [i]是类型i的总价。因此,应该将freq [i]初始化为0而不是-1。

您可以使用 freq[i]==0来确定是否有这样的篮子。它节省了 avail占用的内存。

关于c++ - 为什么在此代码中出现运行时错误SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60754837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com