用c++写一个判断子数列是否在主数列中的程序
时间: 2023-12-09 20:02:37 浏览: 31
以下是一个用 C++ 编写的判断子数列是否在主数列中的程序:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool isSubsequence(vector<int>& nums1, vector<int>& nums2) {
int i = 0, j = 0;
while (i < nums1.size() && j < nums2.size()) {
if (nums1[i] == nums2[j]) {
i++;
}
j++;
}
return i == nums1.size();
}
int main() {
int m;
cin >> m;
vector<int> mm(m);
for (int i = 0; i < m; i++) {
cin >> mm[i];
}
int n;
cin >> n;
vector<int> nn(n);
for (int i = 0; i < n; i++) {
cin >> nn[i];
}
bool result = isSubsequence(nn, mm);
if (result) {
cout << "子数列在主数列中" << endl;
} else {
cout << "子数列不在主数列中" << endl;
}
return 0;
}
```
输入格式为两行,第一行为主数列的长度 m 和 m 个整数,第二行为子数列的长度 n 和 n 个整数。程序会判断子数列是否在主数列中,并输出相应的结果。其中 isSubsequence 函数用于判断子数列是否在主数列中,它的实现方式是采用双指针的方法,即用两个指针 i 和 j 分别指向主数列和子数列中的元素,当主数列中的元素等于子数列中的元素时,指针 i 和 j 分别向后移动,否则只有指针 j 向后移动。最终当指针 i 移动到了主数列的末尾时,就说明子数列在主数列中。