请教大家一个问题,例如这样一组数据
............
192.168.1.12
192.129.12.12
212.113.312.312
123.123.22.123
123.123.22.123
212.113.312.312
212.113.312.312
192.128.12.34
122.212.23.34
123.34.55.33
122.212.23.34
122.212.23.34
111.11.11.1
111.11.11.1
111.11.11.1
111.11.11.1
111.11.11.1
111.11.11.1
123.34.55.33
123.34.55.33
111.11.11.1
111.11.11.1
111.11.11.1
121.212.34.54
.............
.......
如何将里面出现次数最多的一条数据,提取出来,例如111.11.11.1
大家有什么好的想法或者好的算法可以解决,可以相互讨论,有源码最好!

解决方案 »

  1.   

    傻方法:结构体
    struct ds
    {
    CString str; //x pixel
    int num; //y pixel

    bool operator < (const ds &m)const {
    return num > m.num;
    } //降序排列
    dt(void){}; ~dt(void){}};然后vector<dt>  T;对于每条记录,使用find函数,能找到记录就num++,找不到T push_back
    然后sort。第一条就是次数最多的数据。另外,还可以开一个标记变量max_num,max_index其实每次存的时候,T的当前元素num>max_num,max_index=当前序号。这样就不用sort
      

  2.   

    这样的题,先用快速排序法,可以用stdlib.h中的qsort函数,排完序后就顺序读,标记判断,一遍就行了