网易2017春招内推笔试题
题目:
牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。
输入描述:
每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。输出描述:
输出一行一个数字表示完成所有料理需要多少种不同的材料。
输入例子:
BUTTER FLOUR HONEY FLOUR EGG
输出例子:
4
题目分析:
每行代表一种料理,每种料理的材料有该行的单词构成,材料(单词)之间用空格隔开。
求材料的总数量。这不是Hash中的Set集合嘛
代码如下:
程序运行结果:#include<iostream> #include<set> #include<string> using namespace std; int main(){ string str; set<string> resource; //在VC6.0下测试:换新一行,按Ctrl+Z 停止输入,按两次Enter键输出结果 while(cin>>str) { resource.insert(str); } cout<<resource.size()<<endl; return 0; }
如果读者对结束按Ctrl+Z结束输入这一块有困惑的话,可以百度下"C,C++结束输入时的结束符"
#include<stdio.h> int main(){ while(getchar()!=EOF); return 0; }
在Windows下,按下Ctrl+Z键可以产生键盘输入流的结束标记(在linux下使用Ctrl+D键),然后按回车就会关闭了。
下面介绍Set集合的一些函数
c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器
c++ stl容器set成员函数:clear()--清除所有元素
c++ stl容器set成员函数:count()--返回某个值元素的个数
c++ stl容器set成员函数:empty()--如果集合为空,返回true
c++ stl容器set成员函数:end()--返回指向最后一个元素的迭代器
c++ stl容器set成员函数:equal_range()--返回集合中与给定值相等的上下限的两个迭代器
c++ stl容器set成员函数:erase()--删除集合中的元素
c++ stl容器set成员函数:find()--返回一个指向被查找到元素的迭代器
c++ stl容器set成员函数:get_allocator()--返回集合的分配器
c++ stl容器set成员函数:insert()--在集合中插入元素
c++ stl容器set成员函数:lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
c++ stl容器set成员函数:key_comp()--返回一个用于元素间值比较的函数
c++ stl容器set成员函数:max_size()--返回集合能容纳的元素的最大限值
c++ stl容器set成员函数:rbegin()--返回指向集合中最后一个元素的反向迭代器
c++ stl容器set成员函数:rend()--返回指向集合中第一个元素的反向迭代器
c++ stl容器set成员函数:size()--集合中元素的数目
c++ stl容器set成员函数:swap()--交换两个集合变量
c++ stl容器set成员函数:upper_bound()--返回大于某个值元素的迭代器
c++ stl容器set成员函数:value_comp()--返回一个用于比较元素间的值的函数