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

编辑:
我想我发现,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;
    }
}

最佳答案

您是否检查了min_element函数的返回值?根据用户输入,min_element函数将迭代器返回到“最后一个元素”,后者基本上是nullptr。由于您直接取消引用它,因此会出现错误。

关于c++ - 消除运行时错误(SIGSEGV),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49086773/

10-15 03:11
查看更多