【问题标题】:Time limit exceeded error C++超出时间限制错误 C++
【发布时间】:2014-11-12 09:07:24
【问题描述】:

我正在用 C++ 编程自动化平台中的一些问题,它给我超出了时间限制,我在终端中测试了代码,但我不知道为什么它不会停止等待数字,我设置了一个限制while 循环中的 n 个数字。当我输入 n 个数字时,它应该停止。代码如下:

#include<iostream>
#include<vector>
using namespace std;


int main(){
    int n;
    while (cin >> n){
        vector<int> v(n);
        int count = 0;
        for (int i = 0; i < n; ++i){
            cin >> v[i];
            bool unique = true;
            for (int j = 0; j < i; ++j){

                if (v[i] == v[j]){
                    unique = false;
                    j = 1;
                }
            }
            if (unique)
            ++count;
        }
            cout << count << endl;
    }
}

【问题讨论】:

  • j = 1;?那是为了什么?
  • 如果你碰到了一个重复的元素,你设置了j = 1 并且可能会一直循环下去......
  • i >= 3 的情况下,在内部循环中设置 j=1; 将无济于事。
  • 这是UVA在线的问题吗?
  • @Aleksandar No,来自 UPC

标签: c++ vector iostream


【解决方案1】:

您在内部 for 循环中使用以下语句暂停程序:

j = 1;

我认为您可以安全地删除该行,它应该开始按预期工作,也许将内部循环更改为:

for (int j = 0; j < i && unique; ++j) { ... }

【讨论】:

  • 我只需要删除 j = 1 :)
  • 他的方法更快,因为当你得到一个非唯一元素时你会跳出循环。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多