目录
思路:
分别用两个字符串str和sub分别接收列表和要查找的姓名,遍历str,遇到引号,则继续查找下一个引号出现的位置,然后将引号中间的字符串拷贝到vector当中,没有遇到引号,如果找到尾,则将下一次逗号出现的位置记录,将两个逗号中间的字符串拷贝到vector当中,如果到头了,则直接将最后一个字符串拷贝到vector当中,用sub到vector中寻找是否符合。
str.substr(),第一个参数是字符串起始位置,第二个是拷贝的长度,返回拷贝字符串
str.find(),第一个参数是要寻找的字符或字符串,第二个参数是寻找的起始位置,返回找到字符的起始位置
find(),第一第二个参数控制,寻找的范围(用迭代器),第三个参数是要寻找的字符串,返回值是迭代器,具体使用看代码
- // write your code here cpp
- #include
- #include
- #include
- #include
- using namespace std;
- int main()
- {
- string str,sub;
- while(getline(cin, str))
- {
- getline(cin, sub);
- vector
arr; - for(int i = 0; i < str.size(); ++i)
- {
- //处理引号部分
- if(str[i] == '\"')
- {
- //将引号中的名字存起来
- arr.push_back(str.substr(i+1, str.find('\"', i+1)-1-i));
- //从","下一位开始找
- i = str.find('\"', i+1)+1;
- }
- //处理非引号部分
- else
- {
- //如果没到头
- if(str.find(',', i)!=string::npos)
- {
- arr.push_back(str.substr(i, str.find(',', i)-i));
- i = str.find(',', i);
- }
- //如果到头了
- else
- {
- arr.push_back(str.substr(i, str.size()-i));
- i = str.size();
- }
- }
- }
- if(find(arr.begin(), arr.end(), sub)!=arr.end())
- cout<<"Ignore"<
- else
- cout<<"Important!"<
- }
- return 0;
- }
第二题-年会抽奖
思路:
- // write your code here cpp
- #include
- using namespace std;
- int main ()
- {
- //用long long防止超出范围
- long long mistake[21]={0,0,1};//都装错的次数
- long long sum[21] = {1,1,2};//所有装的方法
- for(int i = 3; i <= 20; ++i)
- {
- mistake[i] = (i-1)*(mistake[i-1]+mistake[i-2]);
- sum[i] = sum[i-1]*i;
- }
- int n;
- while(cin>>n)
- {
- printf("%.2lf%\n",100.0*mistake[n]/sum[n]);
- }
- }
-
相关阅读:
5G技术与教育的融合:挑战与机遇
MP157-2-TF-A移植:
xavier安装torch-gpu
Unity数据持久化之PlayerPrefs
日志框架log4j升级至log4j2
Android 特殊场景下获取Drawable的资源id(ResourceId)
百华鞋业董事长牛兴华应邀出席德国前总统武尔夫欢迎宴会
简化的 Java 六边形架构
认识NR(二): 单天线阵面Type II码本生成过程
计算机毕业设计Python+django 网上外卖订餐系统(源码+系统+mysql数据库+Lw文档)
-
原文地址:https://blog.csdn.net/YQ20210216/article/details/127706554