zoukankan      html  css  js  c++  java
  • 算法训练营 入门篇 STL应用 vector HDU 3527

    这是算法训练营这本书 STL应用的第一个点 使用vector
    我们看看cppference这个站点对vector的介绍
    https://en.cppreference.com/w/cpp/container/vector
    常用的函数如下

    | operator=                                                                      |
    | operator[]                                                                     |
    | front                                                                          |
    | back                                                                           |
    | Iterators                                                                      |
    | begin                                                                          |
    | end                                                                            |
    | rbegin                                                                         |
    | rend                                                                           |
    | empty                                                                          |
    | size                                                                           |
    | reserve                                                                        |
    | clear                                                                          |
    | insert                                                                         |
    | erase                                                                          |
    | push_back                                                                      |
    | pop_back                                                                       |
    | resize                                                                         |
    | swap                                                                           |
    

    HDU 3527 https://vjudge.net/problem/HDU-3527

    题目的大意就是有三份名单,一份是所有旅客,一份是A间谍名单,一份是B间谍名单。
    要求 我们找出现在A名单上但是未出现在B名单上的的旅客间谍(也就是同时还出现在第一份名单上)。
    
    输入格式
    第一行三个数字 空格隔开  表示三份名单的长度  A B C
    第二行有A个名字 空格隔开
    第三行有B个名字 空格隔开
    第四行有C个名字 空格隔开
    
    输出格式
    输出一样 输出答案名字  空格隔开
    
    ##Sample Input
    8 4 3
    Zhao Qian Sun Li Zhou Wu Zheng Wang
    Zhao Qian Sun Li
    Zhao Zhou Zheng
    2 2 2
    Zhao Qian
    Zhao Qian
    Zhao Qian
    
    
    ##Sample Output
    
    Qian Sun Li
    No enemy spy
    

    解答
    使用vector接受输入,展示下vector的用法

    // 1111111.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //
    
    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>
    
    
    using namespace std;
    
    /*
    Sample Input
    8 4 3
    Zhao Qian Sun Li Zhou Wu Zheng Wang
    Zhao Qian Sun Li
    Zhao Zhou Zheng
    2 2 2
    Zhao Qian
    Zhao Qian
    Zhao Qian
    
    Sample Output
    Qian Sun Li
    No enemy spy
    */
    
    int n, a, b;
    
    int main()
    {
    	while (cin >> n >> a >> b) {
    		vector<string> vis;
    		vector<string> A;
    		vector<string> B;
    		string t;
    		for (int i = 0; i < n; i++) {
    			cin >> t;
    			vis.push_back(t);
    		}
    
    		for (int i = 0; i < a; i++) {
    			cin >> t;
    			A.push_back(t);
    		}
    
    		for (int i = 0; i < b; i++) {
    			cin >> t;
    			B.push_back(t);
    		}
    
    		vector<string> ans;
    		//依次查找A中的名单 ,如果在vis中且不在B中,那么就是答案之一
    		for (auto& e : A) {
    			if (find(vis.begin(), vis.end(), e) !=vis.end()  && 
    				find(B.begin(),B.end(),e) == B.end()) 
    			{
    				ans.push_back(e);
    			}
    		}
    
    		if(!ans.empty()){
    			for (int i = 0; i < ans.size(); i++) {
    				cout << ans[i];
    				if (i != ans.size() - 1) {
    					cout << " ";
    				}
    			}
    		}
    		else {
    			cout << "No enemy spy";
    		}
    		cout << endl;
    	}
    }
    
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    [CSS揭秘]不规则投影
    [CSS揭秘]规则投影
    [CSS揭秘]伪随机背景
    [CSS揭秘]复杂的背景图案
    [CSS揭秘]条纹背景
    [CSS揭秘]连续的图像边框
    Git_Eclipse:[1]Git安装插件
    Git_常用命令
    上海 day38--多表查询、python操作MySQL
    上海 day37-- MySQL 单表查询,连表操作和子查询
  • 原文地址:https://www.cnblogs.com/itdef/p/15082971.html
Copyright © 2011-2022 走看看