消除运行时错误(SIGSEGV)

时间:2018-03-03 16:59:41

标签: c++

我不认为在我的代码中我尝试访问空指针,或初始化大型数组,有人请帮忙,我不知道运行时错误(SIGSEGV)的来源。可以在https://www.codechef.com找到问题的问题 / MARCH18B /问题/ MINEAT

编辑: 我想我发现,NathanOliver是对的,v1,因为我的代码,有时候是空的。实际上我的循环中找到了一些答案(在n之上)。非常感谢。我修好了,我终于得到了AC,但只有30分,我的代码又花了0.01秒才能运行。根据问题陈述,请任何人帮我优化它。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int t; cin>>t; while(t--)
    {
        int n = 0, h = 0; cin>>n>>h;

        vector<int> v; vector<int> v1;

        for(int i = 0; i != n; i++){int a; cin>>a; v.push_back(a);}

        for(int j = 1; j <= h; j++)
        {
            int hold = 0;

            for(auto k : v)
            {
                if (j >= k){hold +=1;}

                else if (j < k){if(k % j == 0){hold += (k/j);} else{hold += ((k/j)+1);}}
            }

            if (hold <= h){v1.push_back(j);}
        }
        cout<<*min_element(v1.begin(),v1.end())<<endl;
    } 
}

1 个答案:

答案 0 :(得分:1)

你检查了min_element函数的返回值吗?根据用户输入,min_element函数返回一个迭代器到'last element',它基本上是一个nullptr。由于您直接取消引用它,您会收到错误。