5 条题解
-
3
咳咳咳(说
正事专用咳嗽),来发正经解法#include <bits/stdc++.h> using namespace std; map<int, int> mp; int n, x; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for (int i = 1; i <= n; i++) { cin >> x; mp[x]++; } for (auto b : mp) cout << b.first << " " << b.second << endl; return 0; }
-
-1
#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; }
-
-3
这里采用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
信息
- ID
- 736
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 75
- 已通过
- 34
- 上传者