AcWing 2816. 判断子序列
原题链接
简单
作者:
黑夜最相似
,
2021-01-15 14:11:20
,
所有人可见
,
阅读 305
c++写法
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int n,m;
int a[N],b[N];
int main()
{
cin >> n >> m;
for(int i = 0; i < n; ++i) cin >> a[i];
for(int j = 0; j < m; ++j) cin >> b[j];
/*
依次枚举a序列的每个数是否在b中出现,及检查相对位置
若有b中的j位置与a中的i位置匹配,两者向后移
否者,枚举j直到匹配上当前的i为止
当a中所有数都匹配成功,则Yes
*/
int i,j;
for(i = 0,j = 0; i < n; ++i,++j) {
while(j < m && a[i] != b[j]) ++j;
if(j >= m) {
cout << "No" << endl;
break;
}
}
if(i >= n) cout << "Yes";
return 0;
}