给定一个数组和一个目标值,需要得出数组中哪两个元素之和等于目标值,写一段C++代码
时间: 2023-03-16 21:44:10 浏览: 79
C语言代码:
int arr[] = {1, 2, 3, 4, 5};
int target = 7;int i, j;
for (i = 0; i < 5; i++) {
for (j = i + 1; j < 5; j++) {
if (arr[i] + arr[j] == target) {
printf("arr[%d] + arr[%d] = target", i, j);
}
}
}
相关问题
c++ 给定一个整型数组n,将数组中的值组合成x,有几种组合方式
你好!对于给定的整型数组n,将数组中的值组合成x,有多种方法可以实现。
一种常见的方法是使用递归。我们可以定义一个递归函数,该函数接受数组、目标值x和当前索引作为参数。在每一次递归调用中,我们有两种选择:要么将当前索引的元素包含在组合中,要么不包含。如果选择包含当前索引的元素,则目标值x减去该元素的值,并将索引加1。如果选择不包含当前索引的元素,则只需将索引加1。递归终止条件是当目标值x等于0时,说明找到了一种组合方式;当索引超过数组长度时,说明已经遍历完所有元素。
以下是一个示例代码实现:
```cpp
#include <iostream>
#include <vector>
int countCombinations(std::vector<int>& nums, int x, int index) {
if (x == 0) {
// 找到一种组合方式
return 1;
}
if (index >= nums.size()) {
// 已经遍历完所有元素
return 0;
}
// 不包含当前索引的元素
int count = countCombinations(nums, x, index + 1);
// 包含当前索引的元素
count += countCombinations(nums, x - nums[index], index + 1);
return count;
}
int main() {
std::vector<int> nums = {1, 2, 3};
int x = 4;
int count = countCombinations(nums, x, 0);
std::cout << "有 " << count << " 种组合方式" << std::endl;
return 0;
}
```
在以上示例中,数组`nums`为`{1, 2, 3}`,目标值`x`为4。程序输出结果为"有 4 种组合方式",即数组元素的组合方式为{1, 3}、{2, 2}、{1, 2, 1}和{3, 1}。
希望以上解答能够对你有所帮助!如有任何疑问,请随时提出。
给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。c++
给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以使用两层循环来遍历数组,找到两个数的和等于目标值的情况下,返回它们的下标即可。
以下是解决问题的步骤:
1. 创建一个空字典,用于存储数组中每个元素的值和索引。
2. 遍历数组nums,对于每个元素num和它的索引i,进行以下操作:
- 计算目标值减去当前元素的差值,即complement = target - num。
- 检查差值complement是否在字典中,如果是,则返回差值complement对应的索引和当前元素的索引i。
- 如果不在字典中,则将当前元素的值和索引存储在字典中。
3. 如果遍历结束后仍没有找到符合条件的两个数,返回一个空数组。