【发布时间】:2020-12-01 18:53:17
【问题描述】:
问题是计算给定数组中重复元素的数量:
假设输入是:
- 1
1 2 3 3 3
- 2
1 2 2 3 3 3 4 5
那么第一个输入的输出应该是 3,第二个输入应该是 5。
我已经编写了代码,根据逻辑,它的输出应该是 3,但我得到的输出是 5,任何人都可以发现错误。
#include <bits/stdc++.h>
using namespace std;
int main() {
int a[5] = {
1,
4,
2,
4,
4
};
int b[101];
memset(b, 0, 101);
int cp = 0, i = 0;
b[a[i]] = 1;
for (int j = i + 1; j < 5; j++) {
if (b[a[j] > 0]) {
if (b[a[j]] == 1)
cp++;
cp++;
b[a[j]]++;
} else
b[a[j]] = 1;
}
cout << cp;
return 0;
}
【问题讨论】:
-
memset(b,0,101)不会将整个数组归零,如果a中的值大于 25,则会导致未定义的行为。int b[101] = {};可以避免这个问题。