期末周到了,数据库老师布置了一个课设作业,经过Newbie_QQH,liby,Sheep_Li的组长的不懈努力,终于完成课设,现在让你写个程序来对于他们的课设作业进行测试. 问题是这样的: 首先得到一个空的数组和一个操作指令集,这个操作集中的操作有四种类型。 1 x 向数组的末尾插入x 2 x 如果数组种x存在,删除数组中所有的x元素 3 x 查询数组中是否有x元素 4 x y 将数组中所有的x改成y 现在,请你按顺序进执行操作指令集中的指令,对于每一个类型为3的指令,若存在该元素,输出YES,否则,输出NO. 输入描述: 第1行输入操作集的指令数量T. 第2-T+1行输入指令类型op,操作数x.(若op为4,则输入两个操作数x,y) 输出描述: 对于每一个操作3,输出x元素是否存在. 输入: 7 1 2 3 2 4 2 4 3 4 3 2 1 5 3 5 输出; YES YES NO YES 说明: 第一个操作向数组中插入2. 第二次查询时数组有元素2,输出YES 第三次操作将所有的2改变成了4 第四次操作查询时数组中有元素4,输出YES 写代码c++
时间: 2024-03-25 18:41:42 浏览: 54
以下是C++代码实现:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int T;
cin >> T;
vector<int> arr;
while (T--) {
int op, x, y;
cin >> op >> x;
switch (op) {
case 1:
arr.push_back(x);
break;
case 2:
arr.erase(remove(arr.begin(), arr.end(), x), arr.end());
break;
case 3:
if (find(arr.begin(), arr.end(), x) != arr.end()) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
break;
case 4:
cin >> y;
replace(arr.begin(), arr.end(), x, y);
break;
default:
break;
}
}
return 0;
}
```
核心思路是使用 vector 来存储数组,然后根据不同的操作类型进行不同的处理。其中,操作类型为2和4时需要使用 erase 和 replace 函数来修改 vector。操作类型为3时,使用 find 函数查找 vector 中是否存在元素。
阅读全文