【发布时间】:2013-02-06 23:28:53
【问题描述】:
好吧,我必须找出一个数组中有多少个不同的数字。
例如,如果数组是:1 9 4 5 8 3 1 3 5
输出应该是 6,因为 1,9,4,5,8,3 是唯一的,而 1,3,5 是重复的(不是唯一的)。
所以,到目前为止,这是我的代码.....认为无法正常工作。
#include <iostream>
using namespace std;
int main() {
int r = 0, a[50], n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int j = 0; j < n; j++) {
for (int k = 0; k < j; k++) {
if (a[k] != a[j]) r++;
}
}
cout << r << endl;
return 0;
}
【问题讨论】:
-
对数组进行排序,那么就很简单了。试着自己弄清楚它的复杂性与您的解决方案的复杂性相比如何。
-
这对我来说似乎是家庭作业......但是是的,您可以对数组进行排序,也可以使用哈希表。
-
似乎 SO 是完成最后一分钟作业的好地方。格式化问题,将其发布在 SO 上,???,得到答案!
-
@thang:似乎不是——考虑到这个问题的几乎所有答案都有不正确的算法或使用标准库来完成这项工作——这显然不是这个作业的内容......
-
这是我找到的最好的逻辑。stackoverflow.com/questions/28320454/…
标签: c++ arrays for-loop numbers