C++基础和STL(习题)

您所在的位置:网站首页 女孩子abc C++基础和STL(习题)

C++基础和STL(习题)

2023-09-04 07:29| 来源: 网络整理| 查看: 265

问题 A: 我有一个vector

题目描述 作为一个程序媛/猿,或许大家都有头被按在键盘上的经历。 边总突然想知道自己的头在键盘上按出来的字母有没有规律,于是他打算统计出被按出来的乱码中每个字母出现的位置。 给出字符串和要查询的字母,问要查询的字母出现过的位置。 输入 多组测试样例 每行为一个不知道有多长的字符串 s ,然后是一个字符表示 c 要查询的字母,中间用空格隔开。 保证字符串中只有小写字母。 输出 输出要查询的字母在字符串中出现过的位置,字符串下标从一开始。 如果要查询的字母不在字符串中,输出 NO 样例输入 asdfghjkls s abcdef x 样例输出 2 10 NO

#include #include #include #include using namespace std; int main() { string s; char c; while(cin>>s>>c){ int flag=1; string::iterator it; //字符串的迭代器 vector v; //定义一个vectorr for(it=s.begin();it!=s.end();++it){ if(*it==c) v.push_back(flag) ; flag++; //位置 } if(!v.empty()){ //如果不为空输出vector里的存储 vector::iterator l; for(l=v.begin();l!=v.end();l++) cout cin>>n>>m; if(n==0&&m==0) break; s.clear(); for(int i=1;i1){ //只剩一个时退出循环 for(int i=1;i int n; int x; while(cin>>n){ int flag=0; queue q1; //定义两个队列 queue q2; for(int i=0;i //输入 cin>>x; q2.push(x); } while(!q1.empty()){ //q1为空时退出循环 if(q1.front()==q2.front()){ //如果q1的头等于q2的头则两个都消 q1.pop(); q2.pop(); flag+=2; //得分+2 }else{ //如果q1的头不等于q2的头则消除q1的头 q1.pop(); } } cout cin>>x; c.push_back(x); //输入初始排队码 } while(t--){ //t行操作 string s; cin>>s; if(s[0]=='l'){ //如果是离开, int i; cin>>i;//第几个人离开 vector::iterator it=c.begin(); //队头 c.erase(it+i-1); //删除 vector有erase,list没有 }else{ int i,j; cin>>i>>j; vector::iterator it=c.begin(); //队头 c.insert(it+i-1,j); //插入j w位置为it+i-1 vector ::iterator it2; for(it2=c.begin();it2!=c.end();it2++){ //每次插队后,输出所有 cout list l; list s; while(n--){ cin>>x; l.push_back(x); //输入n个数 } l.sort(); //排序 list::iterator it; //定义迭代器 for(it=l.begin();it!=l.end();it++){ if(s.empty()) //l的第一个元素入s s.push_back(*it); else{ if(*it==s.back()) continue; //如果l要入的等于s的末尾,则不入s else s.push_back(*it); 否则入s } } /*或者可以直接使用list的unique函数(删除所有和前一个元素相同的元素) l.unique(); 最后再遍历l */ list::iterator i; for(i=s.begin();i!=s.end();i++) //遍历S cout list l; list s; while(n--){ cin>>x; l.push_back(x); } l.sort(); list::iterator it; for(it=l.begin();it!=l.end();it++){ if(s.empty()) s.push_back(*it); else{ if(*it==s.back()) continue; else s.push_back(*it); } } cout cin>>name>>color; mp[color].insert(name); //关键字为color 插入到set里 } map ::iterator m; //定义一个map的迭代器 for(m=mp.begin();m!=mp.end();m++){ cout string str; int vip; }temp; bool operator string op,str; int vip; priority_queue q; //定义一个结构体node的优先队列 优先级判定重载运算符 while(cin>>op){ //输入指令 if(op=="PUSH"){ //为push cin>>str>>vip; temp.str=str; temp.vip=vip; q.push(temp); //入队列 } else{ //为pop if(q.empty()){ //如果为空则输出空 cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3