2 solutions
-
0
#include<bits/stdc++.h> using namespace std; /* 思路:将数组排序,统计连续相同的数有几个 1、遇到每个数都C++ 2、C++之后判断连续相同的数是否结束 结束标准:到了最后一个 || 当前数 != 下一个数 */ int n, a[1010],c = 0; int main() { cin >> n; for (int i = 0; i < n; i++){ cin >> a[i]; } //排序 sort(a,a+n); //统计连续相同的数出现的次数 for(int i = 0; i < n; i++){ c++;//统计连续相同的数出现的次数 //判断连续相同的数是否结束 if(i == n - 1 || a[i] != a[i+1]){ //输出 cout << a[i] << " " << c << endl; //计数器清零 c = 0; } } return 0; }
-
0
这里采用STL的map,map会自动给数据排序。 map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树), 这颗树具有对数据自动排序的功能, 所以在map内部所有的数据都是有序的。 map把值与键关联在一起,可以使用键来查找词。 例如:键可以表示学号,而值 可以对应姓名。 代码: #include<bits/stdc++.h> using namespace std; map<int,int> m; int n,x; int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i=1;i<=n;i++) { cin>>x; m[x]++; } map<int,int>::iterator iter;//遍历时需要定义一个迭代器 for(iter=m.begin();iter!=m.end();++iter) { cout<<iter->first<<" "<<iter->second<<endl;//iter->first 值的是键,iter->second指的是值。 } return 0; }
- 1
Information
- ID
- 1076
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 10
- Tags
- # Submissions
- 4
- Accepted
- 3
- Uploaded By