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

Posted

技术标签:

【中文标题】传递一些值时出现运行时错误【英文标题】:I get runtime error while passing some values 【发布时间】:2020-04-10 05:35:03 【问题描述】:

下面,我附上我的代码,谁能告诉我为什么会出现运行时错误?

对于输入 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;

      

【问题讨论】:

与您的问题无关,但请花一些时间阅读Why should I not #include <bits/stdc++.h>? 和Why is “using namespace std;” considered bad practice?。并且通常不要使用在线评委/竞赛网站作为学习资源,因为它们不是。上课,改为阅读books。 看不到任何明显的问题。你知道“检查员”在做什么吗? 我不知道'checker'在做什么,如果我知道那就太容易了。我必须解决这个问题,因为这是我大学的一项练习。 如果p 是空的,那么你会得到一个越界访问:int sm = p[0] + p.size()-1; 事实上,很容易想出会炸毁这个程序的输入. 那我应该改变什么? 【参考方案1】:

我不知道你要实现什么算法,你能说一下它是什么。它看起来类似于中位数。

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

【讨论】:

看评论区。做什么并不重要。我们已经知道为什么我会收到 run time error,但现在我们正在寻找解决它的最佳解决方案。 @chris 当前形式的问题是关于你得到的 run.-time 错误。如果您想询问其他问题(例如某些问题的“最佳”解决方案),请提出一个新问题。但在此之前请阅读How to Ask,以及this question checklist。

以上是关于传递一些值时出现运行时错误的主要内容,如果未能解决你的问题,请参考以下文章

保存电子邮件附件时出现运行时错误 '91

iPhone应用程序中退出时结束时出现运行时错误

在android加载布局时出现了一些错误,但在运行时没有效果

将公式插入单元格 VBA Excel 时出现运行时错误 1004

在 vb6 中填充组合框时出现运行时错误 0

在运行SQL时出现错误,请问如何解决?