首页 > 编程语言 >5381: C++实验:STL之search

5381: C++实验:STL之search

时间:2023-10-13 19:56:35浏览次数:39  
标签:5381 search STL cin -- vec2 vec1 序列

描述

 

 

使用STL中的search函数,判断一个序列是否是另一个序列的子序列。

部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。

 

 

  • C++
int main()
{
    vector<int> vec1, vec2;
    int n, m, a;
    cin>>n>>m;
    while(n--)
    {
        cin>>a;
        vec1.push_back(a);
    }
    while(m--)
    {
        cin>>a;
        vec2.push_back(a);
    }
    Check(vec1, vec2);
    return 0;
}

 

输入

 

 

第一行为一个正整数n和m,n和m为元素个数(n<=1000)。

第二行有n个整数,表示序列1的所有元素。

第三行有m个整数,表示序列2的所有元素。

 

 

输出

 

 

如果序列2是序列1的子序列,则输出所在子序列的始末位置。

否则输出None。

 

 

样例输入

 

5 2
1 3 2 4 5
3 2

样例输出

 

2 3

定义一个Check函数,使用std::search函数来查找vec2在vec1中的位置。std::search函数返回一个迭代器,指向在vec1中找到的vec2的第一个元素的位置。如果vec2不是vec1的子序列,std::search函数将返回vec1.end()。

以下是完整的代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3+10,inf = 0x3f3f3f3f;
void Check(vector<int>& vec1, vector<int>& vec2)
{
    vector<int>::iterator it;
    it = search(vec1.begin(), vec1.end(), vec2.begin(), vec2.end());
    if(it != vec1.end())
    {
        cout << distance(vec1.begin(), it) + 1 << " " << distance(vec1.begin(), it) + vec2.size() << endl;
    }
    else
    {
        cout << "None" << endl;
    }
}
int main()
{
    vector<int> vec1, vec2;
    int n, m, a;
    cin>>n>>m;
    while(n--)
    {
        cin>>a;
        vec1.push_back(a);
    }
    while(m--)
    {
        cin>>a;
        vec2.push_back(a);
    }
    Check(vec1, vec2);
    return 0;
}

 

在这个代码中,distance(vec1.begin(), it) + 1计算的是vec2在vec1中的开始位置,distance(vec1.begin(), it) + vec2.size()计算的是vec2在vec1中的结束位置。注意,这里的位置是从1开始计数的,所以我们需要加1。

 

标签:5381,search,STL,cin,--,vec2,vec1,序列
From: https://www.cnblogs.com/jyssh/p/17763001.html

相关文章

  • 5383: C++实验:STL之multimap
    描述  使用STL中的multimap记录用户的所有电话号码,yuyu想查询用户有多少个电话号码,crq则想查询时输出所有的号码。部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。 C++intmain(){ multimap<string,string>sm; stringname,phone; intn; cin>>......
  • elasticsearch
    lucenesolressolr和es都是基于lucene官网: https://www.elastic.co/cn/elasticsearch/ 倒排序索引lucene是类库solr基于lucene ......
  • Debian12安装elasticsearch实践及问题解决方案
    一、安装安装其实很简单,直接上官网链接:下载地址,官网提供了所有安装方式,总一款适合你。我的目标系统是Debian12,包管理是apt-get,所以就以这个为示例,仅供参考。1、先选择需要安装的版本2、导入ElasticsearchPGP密钥wget-qO-https://artifacts.elastic.co/GPG-KEY-elastic......
  • elasticsearch_exporter监控elasticsearch
    1、官网下载elasticsearch_exporter的安装包,地址如下:```bashhttps://github.com/prometheus-community/elasticsearch_exporter```2、配置成服务```bashvim/etc/systemd/system/elasticsearch_exporter.service###写入如下内容[Unit]Description=elasticsearch_exporterAfte......
  • ElasticSearch集群搭建
    2.1ES集群的好处es天然支持集群模式,其好处主要有两个:1.能够增大系统的容量,如内存、磁盘,使得es集群可以支持PB级的数据;2.能够提高系统可用性,即使部分节点停止服务,整个集群依然可以正常服务;2.2ES如何组集群单节点ES,如下图所示;如果单节点出现问题,服务就不可用了,如何新增一个es......
  • P1457 [USACO2.1] 城堡 The Castle 题解
    分析感觉没有蓝题难度一道bfs题目,相较于大部分bfs题,它较为复杂,但分析一下还是很好水过的。建立墙时,可以用三维数组,\(wall_{~i,~j,~pos}\)表示第\(i\)行第\(j\)列\(pos\)方向有墙。观察发现,\(8=2^3,4=2^2,2=2^1,1=2^1\),于是可以用位运算快速储存。这里给出......
  • skywalking elasticsearch 版本匹配问题
     进入skywalking历史下载页面:https://archive.apache.org/dist/skywalking/8.6.0/  开始正常一整个流程应该有skywalking-oap-server、skywalking-oap-ui、es、skywalking-agent.jar;中间最大的问题是版本,然后是配置;个人建议直接用官方给的文档里面的docker镜像作为部署......
  • ElasticSearch集群处于yellow状态处理
    一般思路:1、查看集群状态curl-XGET-u{username}:{password}-s$prefix/_cat/health?v2、查看节点状态curl-XGET-u{username}:{password}-s$prefix/_cat/nodes?v3、查看索引状态curl-XGET-u{username}:{password}-s$prefix/_cat/indices?v4、查看原......
  • C++ - STL算法
    5STL-常用算法 概述:算法主要是由头文件<algorithm><functional><numeric>组成。 <algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等等<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数<funct......
  • 单机版 ElasticSearch 和 Kibana 快速搭建
    ElasticSearch是一款底层是基于lucene实现,功能强大的搜索引擎中间件,也可以认为ElasticSearch是一款NoSql数据库。每一种NoSql数据库的诞生,都是为了解决传输关系型数据库无法解决的问题,ElasticSearch能够从海量数据中快速找到所需要的内容,专注于搜索、分析和计算。Kibana......