voidsolve(){ cin >> n >> m; vector<int> a(n + 1), b(m + 1); for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= m; i++) cin >> b[i]; for (int i = 1, j = 1; i <= n; i++) { while (j <= m && a[i] != b[j]) j++; if ((j <= m && a[i] != b[j]) || j > m) { cout << "No" << endl; return; } j++; } cout << "Yes" << endl; }
还有个更简单的写法
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
voidsolve(){ cin >> n >> m; vector<int> a(n + 1), b(m + 1); for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= m; i++) cin >> b[i]; int i = 1, j = 1; while (i <= n && j <= m) { if (a[i] == b[j]) i++; j++; } cout << (i == n + 1 ? "Yes" : "No") << endl; }