为什么不显示输出?
Why the output is not showing?
我的程序是找出数组中缺失的最小正数。对于以下输入,我期望输出为 2.
6
0
-9
1
3
-4
5
我的问题是它没有给出任何输出。谁能解释一下吗?
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int array[n];
for (int i = 0; i < n; i++)
{
cin >> array[n];
}
int const N = 1e4+2;
bool indexarray[N];
for (int i = 0; i < N; i++)
{
indexarray[i] = false;
}
for (int i = 0; i < n; i++)
{
if (array[i] > 0)
{
indexarray[array[i]] = true;
}
}
int ans = -1;
for (int i = 1; i < N; i++)
{
if (indexarray[i] == false)
{
ans = i;
}
}
cout << ans << endl;
return 0;
}
我认为是因为 int array[n];
生成了一个名为 array
的数组,其中包含 n 个元素,第一个元素从 array[0]
开始。
cin >> array[n];
需要修改array[n]
,但是因为第一个元素是array[0]
,最后一个元素是array[n-1]
,array[n]
不存在。您的代码出错并退出。
尝试改变
for (int i = 0; i < n; i++)
{
cin >> array[n];
}
到
for (int i = 0; i < n; i++)
{
cin >> array[i];
}
此外,我认为可变长度数组是非标准的,所以也许可以尝试更改它。将其替换为 std::vector<int> array(n)
应该可以。
我的程序是找出数组中缺失的最小正数。对于以下输入,我期望输出为 2.
6
0
-9
1
3
-4
5
我的问题是它没有给出任何输出。谁能解释一下吗?
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int array[n];
for (int i = 0; i < n; i++)
{
cin >> array[n];
}
int const N = 1e4+2;
bool indexarray[N];
for (int i = 0; i < N; i++)
{
indexarray[i] = false;
}
for (int i = 0; i < n; i++)
{
if (array[i] > 0)
{
indexarray[array[i]] = true;
}
}
int ans = -1;
for (int i = 1; i < N; i++)
{
if (indexarray[i] == false)
{
ans = i;
}
}
cout << ans << endl;
return 0;
}
我认为是因为 int array[n];
生成了一个名为 array
的数组,其中包含 n 个元素,第一个元素从 array[0]
开始。
cin >> array[n];
需要修改array[n]
,但是因为第一个元素是array[0]
,最后一个元素是array[n-1]
,array[n]
不存在。您的代码出错并退出。
尝试改变
for (int i = 0; i < n; i++)
{
cin >> array[n];
}
到
for (int i = 0; i < n; i++)
{
cin >> array[i];
}
此外,我认为可变长度数组是非标准的,所以也许可以尝试更改它。将其替换为 std::vector<int> array(n)
应该可以。