用c++完成这道题:题目描述 给定一个 nn 个数的数组 aa,再给定 mm 次询问,每次询问一个整数 xx 在数组 aa 中是否存在,如果存在,输出 Y,不存在输出 N。 输入 第 11 行是一个整数 nn(5≤n≤10^55≤n≤10 5 ); 第 22 行有 nn 个整数,数与数之间用空格隔开; 第 33 行有一个整数mm(5≤m≤10^55≤m≤10 5 ); 第 44 行有 mm 个整数,数与数之间用空格隔开; 输出 输出 mm 次查询每次查询的结果(Y 或者 N),每次查询结果之间用空格隔开。
时间: 2024-03-14 10:45:28 浏览: 245
以下是C++代码实现:
```cpp
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
int n, m;
cin >> n;
unordered_set<int> st;
for(int i = 0; i < n; i++) {
int x;
cin >> x;
st.insert(x);
}
cin >> m;
while(m--) {
int x;
cin >> x;
if(st.count(x)) cout << "Y ";
else cout << "N ";
}
return 0;
}
```
首先读入数组,用 `unordered_set` 存储,然后对每个询问进行判断,如果该元素出现在 `unordered_set` 中,输出 `Y`,否则输出 `N`。
相关问题
用c++完成这道题:给定一个 nn 个数的数组 aa (保证 nn 个数互不相同),再给定 mm 次询问,每次询问一个整数 xx 在数组 aa 中出现的位置,如果存在输出该数在 aa 数组中出现的位置,不存在输出 00 。
好的,这是一个比较简单的问题,可以使用线性查找来解决。以下是使用 C++ 实现的代码:
```c++
#include <iostream>
using namespace std;
const int N = 100010;
int a[N];
int main()
{
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
cin >> a[i];
while (m--)
{
int x;
cin >> x;
int pos = -1;
for (int i = 0; i < n; i++)
{
if (a[i] == x)
{
pos = i;
break;
}
}
if (pos == -1)
cout << "0" << endl;
else
cout << pos << endl;
}
return 0;
}
```
这个程序首先读入数组的长度和询问的次数,然后再读入数组元素。在每次询问中,我们使用一个循环来查找目标元素在数组中的位置,如果找到了,则输出该位置,否则输出 0。
用c++完成这道题:题目描述 给定一个 nn 个数的数组 aa (保证 nn 个数互不相同),再给定 mm 次询问,每次询问一个整数 xx 在数组 aa 中出现的位置,如果存在输出该数在 aa 数组中出现的位置,不存在输出 00 。 输入 第 11 行是一个整数 nn(5≤n≤10^55≤n≤10 5 )。 第 22 行有 nn 个整数,数与数之间用空格隔开。 第 33 行有一个整数 mm(5≤m≤10^55≤m≤10 5 )。 接下来 mm 行,每行有一个整数。 输出 输出 mm 行,每行输出每次查询的整数在 aa 数组中的位置,如果该数不存在,输出 00。 样例 输入复制 5 1 5 2 4 6 5 5 1 8 9 0 输出复制 2 1 0 0 0 说明 【注意】 由于本题读入、输出的数据较多,C++选手请使用scanf和printf 替代 cin和cout 提升读写效率。
以下是C++代码实现:
```c++
#include <cstdio>
#include <unordered_map>
using namespace std;
int main() {
int n, m;
scanf("%d", &n);
unordered_map<int, int> mp; // 建立哈希表
for (int i = 1; i <= n; i++) {
int x;
scanf("%d", &x);
mp[x] = i; // 将每个数的位置存入哈希表
}
scanf("%d", &m);
while (m--) {
int x;
scanf("%d", &x);
if (mp.count(x)) { // 判断该数是否存在
printf("%d ", mp[x]);
} else {
printf("0 ");
}
}
return 0;
}
```
解释一下代码实现:
首先读入整数n,然后使用unordered_map(哈希表)来存储每个数在数组中的位置,读入时将每个数的位置存入哈希表。
然后读入整数m,进行m次查询,对于每次查询,判断该数是否在哈希表中出现过,如果出现过则输出该数在数组中的位置,否则输出0。
阅读全文