传递某些值时出现运行时错误

时间:2020-04-10 05:35:03

标签: c++ algorithm vector

伙计,我附上我的代码,有人可以告诉我为什么会出现运行时错误吗?

对于输入1 5 1 2 1 3 1,正确答案是2。此示例有效,但是当我将此算法放到检查器上时,出现“运行时错误”

#include <bits/stdc++.h>
using namespace std;

int main()
{
      int z;
      cin >> z;
      for (int ii = 0; ii < z; ii++)
      {
        int k;
        cin >> k;
        vector <int> p(k,0);
        for (int i = 0; i < k; i++)
        {
            int m;
            cin >> m;
            p[m]++;
        }
        sort(p.begin(),p.end());
        int sm = p[0] + p.size()-1;
              for (int i = 1; i < p.size(); i++)
              {
                      int cm = p[i] + p.size()-i-1;
                      if(cm<sm)sm = cm;
              }
              cout << sm << endl;

      }
}

1 个答案:

答案 0 :(得分:0)

我不知道您要尝试执行哪种算法,您能说一下它是什么。它看起来类似于中位数。

但是,我确定语句p[m]++应该是p[i]=m,因为看起来您正在尝试使用用户输入的值填充向量。