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

解决: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. */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值