STL之search
描述
使用STL中的search函数,判断一个序列是否是另一个序列的子序列。
部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。
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
#include <iostream> #include <algorithm> #include <vector> using namespace std; void Check(vector<int > &vec1,vector<int> &vec2) { vector<int >::iterator iter1,iter2; int k=0; for(iter2=vec2.begin();iter2!=vec2.end();iter2++) k++; iter1=search(vec1.begin(),vec1.end(),vec2.begin(),vec2.end()); if(iter1!=vec1.end()) cout<<int(iter1-vec1.begin())+1<<" "<<int(iter1-vec1.begin())+k<<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; }