#include<iostream>
using namespace std;
const int N=100002;
int a[N],b[N];
int main(){
int n,m;
cin>>n>>m; // 输入n和m的值
for(int i=0;i<n;i++){
cin>>a[i]; // 输入数组a的元素
}
for(int j=0;j<m;j++){
cin>>b[j]; // 输入数组b的元素
}
int i,j=0; // 初始化指针i和j
while(i<n&&j<m){
if(a[i]==b[j]){
i++; // 如果a[i]等于b[j],则将i向右移动一位
}
j++; // 将j向右移动一位
}
if(i==n){
puts("Yes"); // 如果i等于n,表示数组a中的所有元素都在数组b中出现过,则输出"Yes"
}
else{
puts("No"); // 否则,输出"No"
}
}
2.JAVA代码实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
final int N = 100002;
int[] a = new int[N]; // 创建一个大小为N的整型数组a,用于存储输入的n个元素
int[] b = new int[N]; // 创建一个大小为N的整型数组b,用于存储输入的m个元素
int n, m; // 声明变量n和m,用于存储输入的n和m的值
Scanner sc = new Scanner(System.in); // 创建Scanner对象sc,用于从标准输入读取数据
n = sc.nextInt(); // 从输入中读取n的值
m = sc.nextInt(); // 从输入中读取m的值
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt(); // 从输入中读取数组a的元素,并存储到数组a的相应位置
}
for (int i = 0; i < m; i++) {
b[i] = sc.nextInt(); // 从输入中读取数组b的元素,并存储到数组b的相应位置
}
int i = 0, j = 0; // 初始化指针i和j,用于遍历数组a和b
while (i < n && j < m) {
if (a[i] == b[j]) {
i++; // 如果a[i]等于b[j],则将i向右移动一位
}
j++; // 将j向右移动一位
}
if (i == n) {
System.out.println("Yes"); // 如果i等于n,表示数组a中的所有元素都在数组b中出现过,则输出"Yes"
} else {
System.out.println("No"); // 否则,输出"No"
}
}
}