ACM SET集合
来源:互联网 发布:哥们诛神法宝升级数据 编辑:程序博客网 时间:2024/06/13 21:17
原题链接:
http://newoj.acmclub.cn/problems/1682
题目描述:
STL库中有许多非常实用的函数,如sort,set,map,vector,queue等。
此题为set集合的应用教学,题目如下:
运动会又开始了,acm俱乐部的出题组成员因要忙着出题,便向教主申请了请假,教主写下了请假名单。
某成员因不在请假名单而被担心记上了名,现在他偷偷搞到了记名名单,想要偷偷抹掉自己的名字。
请通过set集合进行解答,如果他在这份记名名单中就删除他的名字并按字典序输出还在名单上的名字,
若不在则输出 song
输入:
第一行 包括整数n(名单人数,可能有重复)和 name (某成员的名字)
第二行 请假名单
输出:
如果他在这份记名名单中就删除他的名字并按字典序输出还在名单上的名字,
若不在则输出 song
样例输入
5 zgc
zgc czh zn wsw zn
样例输出
czh wsw zn
解题思路:
这是一道专门考察对set集合应用的编程题,因为在set集合的特点是:不允许有重复的元素,而且会根据元素的键值自动排序,在set集合中元素的实值就是元素的 键值,元素的键值就是元素的实值。因此可以挨个检测set集合中的值,检测其是否与待比较的值相同,如果相同的话,就将相同的删去;如果没有一个元素相同, 就输出song
代码:
#include <bits/stdc++.h>using namespace std;int main(){set <string> s1;string stu,stu1;int n,flag=1;cin>>n>>stu;while(n--){cin>>stu1;s1.insert(stu1);}set<string>::iterator ite1 = s1.begin();set<string>::iterator ite2 = s1.end();for(;ite1 != ite2;ite1++) if(*ite1 == stu){ flag = 0; s1.erase(*ite1); }ite1 = s1.begin();if(flag == 1) cout<<"song"<<endl;else{ for(;ite1 != ite2;ite1++){ cout<<*ite1<<" "; }} return 0;}
- ACM SET集合
- ACM c++ set集合基本操作
- ACM学习历程10——set集合容器
- Set 集合
- Set集合
- Set集合
- Set集合
- set集合
- Set集合
- Set集合
- Set集合
- Set 集合
- 集合set
- Set集合
- Set集合
- Set集合
- Set集合
- 集合set
- vtk7.1+vs2010 运行实例2
- memcache与redis的存储类型
- Nginx开发从入门到精通
- Effective C++笔记
- 数据结构实验之图论三:判断可达性
- ACM SET集合
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用014-Flink在批处理中常见的sink和source002
- 以管理员身份运行bat代码
- 超级详细Tcpdump 的用法
- thinkphp 权限无限极分类
- VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)
- 线性代数3——矩阵乘法
- 使用拖放打开文档
- CCF 201609-3 炉石传说