从C中的数组打印重复时的冗余结果?

时间:2013-05-08 07:09:43

标签: c arrays

这是我的代码的一小部分,我正在打印数组中的重复项。问题是它不止一次打印每个重复的事件。防爆。数组{1,2,3,4,5,6,7,8,9,0,2,2)打印

value 2 at position 1 is also at position 10
value 2 at position 1 is also at position 11
value 2 at position 10 is also at position 11

而不仅仅是

value 2 at position 1 is also at position 10
value 2 at position 1 is also at position 11
    for(i = 0; i < num_count; ++i){
        for (j = i + 1; j < num_count; j++) {
            if (num[i] == num[j]){
                printf("\nvalue %d at position %d is also at position %d", num[i], i, j);
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

如果您被允许修改数组,请考虑在将数组标识为重复后从数组中删除一个值(例如,将其设置为-1或超出正常输入范围的其他值)。

答案 1 :(得分:0)

我假设您了解了已粘贴代码的问题,并询问算法建议。

如果允许使用cpp,您可以考虑使用STL的Map,key是数字,value是数字的索引。循环遍历数组,在循环时,首先检查元素在地图中的出现次数。如果密钥已存在,则输出;否则,将此元素及其索引放入地图中。

希望它有所帮助。