用c++完成这道题:给定一个 nn 个数的数组 aa (保证 nn 个数互不相同),再给定 mm 次询问,每次询问一个整数 xx 在数组 aa 中出现的位置,如果存在输出该数在 aa 数组中出现的位置,不存在输出 00 。
时间: 2024-03-10 20:46:41 浏览: 46
好的,这是一个比较简单的问题,可以使用线性查找来解决。以下是使用 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 个整数,再给定 MM 次询问,每次询问给出一个整数 XX ,请求出针对每次询问,整数 XX 在 NN 个整数中出现的次数。
好的,这是一个典型的计数问题,可以使用哈希表来解决。以下是 C++ 代码实现:
```c++
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
unordered_map<int, int> mp; // 哈希表
// 读入 NN 个整数
for (int i = 0; i < n; i++) {
int num;
cin >> num;
mp[num]++; // 哈希表中计数器加一
}
// 处理 MM 次询问
for (int i = 0; i < m; i++) {
int x;
cin >> x;
cout << mp[x] << endl; // 输出整数 x 出现的次数
}
return 0;
}
```
首先读入 NN 个整数,使用 unordered_map 来实现哈希表,对每个整数进行计数。然后处理 MM 次询问,输入整数 x 并输出其出现的次数。
用c++完成这道题:给定 NN 个整数,并给定整数 MM。 请问:在这 NN 个整数中,能否任意几个数的和为 MM,如果可以找到请输出 YES,找不到请输出 NO。
好的,以下是一个使用C++完成该题目的代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
bool canSum(vector<int>& nums, int target) {
vector<bool> dp(target + 1, false);
dp[0] = true;
for (int i = 0; i < nums.size(); i++) {
for (int j = target; j >= nums[i]; j--) {
dp[j] = dp[j] || dp[j - nums[i]];
}
}
return dp[target];
}
int main() {
int n, m, x;
vector<int> nums;
cout << "请输入整数的数量:";
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x;
nums.push_back(x);
}
cout << "请输入目标整数:";
cin >> m;
if (canSum(nums, m)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
```
该代码中,我们首先使用vector容器存储输入的整数序列。然后,我们使用动态规划的思想来判断是否存在任意几个数的和为目标整数m。具体来说,我们定义一个长度为m+1的bool型dp数组,其中dp[i]表示是否存在序列中的某些数的和为i。我们将dp[0]初始化为true,然后对于序列中的每个数,从m向下遍历dp数组,如果dp[j-nums[i]]为true,那么就可以将dp[j]设为true。最后,如果dp[m]为true,则说明存在任意几个数的和为目标整数m,输出YES,否则输出NO。
需要注意的是,该算法的时间复杂度为O(nm),其中n为整数序列的长度,m为目标整数的大小。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)