C++ 中 15000 数组索引之后的不相关整数标准输入

Irrelevant integral stdin input after 15000 array index in c++

本文关键字:不相关 整数 标准输入 之后 索引 15000 数组 C++      更新时间:2023-10-16

我正在尝试解决 c++ 中的一个问题,该问题需要从 stdin 读取积分输入并将其存储在数组中以供进一步处理。

输入测试用例包含介于 1 和 100000 之间的整数。测试用例大小大于 20,000,但我发现在获取超过 15000 索引的输入后,输入返回不相关的重复数字,如下所示 -

94991 -(索引) 1900194991 -(索引) 1900294991 -(索引) 1900394991 -(索引) 1900494991 -(索引) 1900594991 -(索引) 1900694991 -(索引) 1900794991 -(索引) 1900894991 -(索引) 1900994991 -(索引) 1901094991 -(索引) 19011

而原始测试用例包含相同且不同的整数。

下面是输入部分的代码片段-

int n,k,i=0;
    cin>>n;
    //taking input size of array
    int ar[n];
while(n--)
{
    cin>>k;
    ar[i]=k;
    if(i>15000)
    cout<<k<<"  -(index)  "<<i<<endl;

    ++i;
}

编辑1)即使使用while循环而不使用数组,问题仍然存在,就像下面的代码片段一样,只是使用变量k解析输入;即使使用矢量也会产生错误的结果。

 cin>>n;
while(n--)
{
    //cin.clear();
    cin>>k;
    if(i>19000)
    cout<<k<<"  -  "<<i<<endl;
    ++i;
}

上述输入文件的链接 http://bit.ly/1PgAjB3,你们中的任何一个人都可以使用它来测试ideone。

2)该程序适用于5000左右的测试用例

**上述代码片段所属的整个代码是**http://ideone.com/WOYkEl

当测试用例为 5733 时,您可以看到代码有效

替换

int ar[n];

int * ar = new int[n];

在编译时你不知道n,所以这需要动态分配。