蓝桥杯杂题
- 开始聊天吧
- 气球升起
- 度熊所居住
开始聊天吧
#include<bits/stdc++.h>
using namespace std;
set<char>S;
int main()
{string s;while(cin>>s){S.clear();for(auto x:s)//使用x拷贝s字符串 中的每一个字符 {S.insert(x); //将每一个字符插入到集合S中//因为题目要求的是:不同的字母数量//所以使用集合来自动去重 }if(S.size()%2)//s.size() 返回当前set容器中的元素个数 cout<<"CHAT WITH HER"<<endl;else cout<<"IGNORE HIM"<<endl; }return 0;}
set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,如果需要集合中的元素允许重复那么可以使用multiset。
1.set容器的常用操作
使用时注意包含头文件<set> std::set and std::multiset associative containerss.begin() 返回set容器的第一个元素s.end() 返回set容器的最后一个元素s.clear() 删除set容器中的所有的元素s.empty() 判断set容器是否为空s.insert() 插入一个元素s.erase() 删除一个元素s.size() 返回当前set容器中的元素个数
气球升起
再次比赛时间!看到气球漂浮在周围真是令人兴奋。但是要告诉您一个秘密,法官最喜欢的时间是猜测最流行的问题。比赛结束后,他们将对每种颜色的气球进行计数并找到结果。
今年,他们决定把这份可爱的工作留给您。
输入值:
输入包含多个测试用例。每个测试用例均以数字N(0 <N <= 1000)开头-分发的气球总数。
接下来的N行各包含一种颜色。
气球的颜色是由最多15个小写字母组成的字符串。N = 0的测试用例将终止输入,并且该测试用例将不被处理。
输出量:
对于每种情况,请在一行上打印气球颜色以解决最常见的问题。
可以保证每个测试用例都有唯一的解决方案。
样本输入:
5
green
red
blue
red
red
3
pink
orange
pink
0
样本输出:
red
pink
代码:
#include <bits/stdc++.h>
using namespace std;
map<string,int>mp;//使用哈希表进行存储
int main()
{int n;string ans;//用于存储最大的字符串int max=0;//用于比较次数的最大值cin>>n;if(n==0)mp.clear();while(n--){string s;cin>>s;mp[s]++;if(mp[s]>max){ans=s;max=mp[s];}}cout<<ans<<endl;}
度熊所居住
度熊所居住的 D 国,是一个完全尊重人权的国度。以至于这个国家的所有人命名自己的名字都非常奇怪。
一个人的名字由若干个字符组成,同样的,这些字符的全排列的结果中的每一个字符串,也都是这个人的名字。
例如,如果一个人名字是 ACM,那么 AMC, CAM, MAC, MCA, 等也都是这个人的名字。
在这个国家中,没有两个名字相同的人。度熊想统计这个国家的人口数量,请帮助度熊设计一个程序,用来统计每一个人在之前被统计过多少次。
Input:
这里包括一组测试数据,第一行包含一个正整数N,接下来的N 行代表了 N 个名字。
N 不会超过100,000,他们的名字不会超过40位.
Output:
对于每输入的一个人名,输出一个整数,代表这个人之前被统计了多少次。
实例输入:
5
ACM
MAC
BBA
ACM
BAB
实例输出:
0
1
0
2
1
代码:
#include<bits/stdc++.h>
using namespace std;
map<string,int>mp;
vector<int>vec;
int main()
{int n;string s;cin>>n;while(n--){cin>>s;sort(s.begin(),s.end());vec.push_back(mp[s]);mp[s]++;}vector<int>::iterator iter;//注意迭代器的:: for(iter=vec.begin();iter!=vec.end();iter++){cout<< *iter <<endl;}return 0;
}