解决: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
输入一个数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
- //vc6下编译通过
- //修改:qmroom
- //2008-10-27 00:41
- //blog:http://blog.csdn.net/qmroom
- //Email:qmroom#126.com #=@
- #include <iostream>
- #include <map>
- using namespace std;
- class Tj
- {
- public:
- void Add(long num)
- {
- map<long,long>::iterator itr;
- itr = mapTj.find(num);
- if (itr != mapTj.end())
- {
- (*itr).second++;
- }
- else
- {
- mapTj[num] = 1;
- }
- }
- void Show()
- {
- map<long,long>::iterator itr;
- cout<<"自然数"<<"/t/t"<<"出现次数"<<endl;
- for (itr = mapTj.begin(); itr != mapTj.end(); itr++)
- {
- cout<<(*itr).first<<"/t/t"<<(*itr).second<<endl;
- }
- }
- private:
- map<long,long> mapTj;
- };
- int main()
- {
- long num;
- Tj tj;
- cout<<"请输入自然数(负数结束输入):";
- do
- {
- cin>>num;
- if(num > -1)
- tj.Add(num);
- } while (num > -1);
- tj.Show();
- system("pause");
- return 0;
- }
- /* 输出结果:
- 请输入自然数(负数结束输入):8 2 4 2 4 5 100 2 100
- -1
- 自然数 出现次数
- 2 3
- 4 2
- 5 1
- 8 1
- 100 2
- 请按任意键继续. . .
- */