现在的位置: 首页 > 综合 > 正文

利用map数组内消去相同的数

2013年01月29日 ⁄ 综合 ⁄ 共 1351字 ⁄ 字号 评论关闭

解决:http://zhidao.baidu.com/question/73294776.html 上的问题

例如1,2,2,2,3,4,5,5,只保留1,2,3,4,5,

问题补充:【问题描述】:
输入一个数n(n<=200000)和n个自然数(每个数都不超过1.5*10^9),请统计出这些自然数各自出现的次数,按顺序从小到大输出。输入数据保证不相同的数不超过10000个。
【样例输入】:
8 2 4 2 4 5 100 2 100
【样例输出】:
2 3
4 2
5 1
100 2
  1. //vc6下编译通过   
  2. //修改:qmroom   
  3. //2008-10-27 00:41 
  4. //blog:http://blog.csdn.net/qmroom
  5. //Email:qmroom#126.com        #=@   
  6. #include <iostream>
  7. #include <map>
  8. using namespace std; 
  9. class Tj
  10. {
  11. public:
  12.     void Add(long num)
  13.     {
  14.         map<long,long>::iterator    itr;
  15.         itr = mapTj.find(num);
  16.         if (itr != mapTj.end())
  17.         {
  18.             (*itr).second++;
  19.         }
  20.         else
  21.         {
  22.             mapTj[num] = 1;
  23.         }
  24.     }
  25.     
  26.     void Show()
  27.     {
  28.         map<long,long>::iterator    itr;
  29.         
  30.         cout<<"自然数"<<"/t/t"<<"出现次数"<<endl;
  31.         for (itr = mapTj.begin(); itr != mapTj.end(); itr++)
  32.         {
  33.             cout<<(*itr).first<<"/t/t"<<(*itr).second<<endl;
  34.         }
  35.     }
  36. private:
  37.     map<long,long>  mapTj;
  38. };
  39. int main()
  40. {
  41.     long num;
  42.     Tj  tj;
  43.     
  44.     cout<<"请输入自然数(负数结束输入):";
  45.     do
  46.     {
  47.         cin>>num;
  48.         if(num > -1)
  49.             tj.Add(num);
  50.     } while (num > -1);
  51.     tj.Show();
  52.     system("pause");    
  53.     return 0;
  54. /* 输出结果:
  55.     请输入自然数(负数结束输入):8 2 4 2 4 5 100 2 100
  56.     -1
  57.     自然数          出现次数
  58.     2               3
  59.     4               2
  60.     5               1
  61.     8               1
  62.     100             2
  63.     请按任意键继续. . .
  64. */

抱歉!评论已关闭.