c语言在数组中查找某几个和为给定值的数并返回下标
时间: 2024-10-07 19:03:59 浏览: 18
在 C 语言中,查找数组中某几个数相加等于给定值的问题,可以采用哈希表(如`std::unordered_set`或自定义结构体)或者双重循环遍历的方式来解决。这里我们提供一种简单的双重循环方法:
```c
#include <stdio.h>
// 自定义函数用于查找符合条件的下标
void findSumIndices(int arr[], int n, int target) {
for (int i = 0; i < n - 2; i++) { // 从第一个元素开始到倒数第三个
for (int j = i + 1; j < n - 1; j++) { // 再次从当前元素+1到倒数第二个
int remaining = target - (arr[i] + arr[j]); // 计算剩余目标
if (remaining >= 0 && findIndex(arr, remaining, j + 1) != -1) { // 如果剩余还可以找到对应的值
printf("找到了下标 %d 和 %d 的组合,它们之和为 %d\n", i, j, arr[i] + arr[j]);
return;
}
}
}
// 使用findIndex辅助函数查找剩余部分
int findIndexAux(int arr[], int target, int start) {
for (int k = start; k < n; k++) {
if (arr[k] == target) {
return k;
}
}
return -1; // 没有找到目标值则返回-1
}
}
int main() {
int arr[] = {2, 7, 11, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 20;
findSumIndices(arr, n, target);
return 0;
}
```
这个程序会寻找 `arr` 中存在两个元素,它们与数组最后一个元素一起组成的目标值 `target`。如果找到这样的组合,它会打印出这两个元素的下标。
阅读全文