给定一个整数数组和一个目标值,找到所有相加等于该目标值的下标,比如arr{3,5,2,6},目标值是11,则返回1,3和0,2,3,c语言解决
时间: 2023-06-24 08:04:05 浏览: 55
zidianxu.rar_4 3 2 1
以下是用 C 语言实现的一个简单的解决方案:
```c
#include <stdio.h>
#include <stdlib.h>
void findSumIndexes(int *arr, int n, int target) {
int i, j;
int sum;
int found = 0;
for (i = 0; i < n; i++) {
sum = arr[i];
for (j = i + 1; j < n; j++) {
sum += arr[j];
if (sum == target) {
printf("%d,%d ", i, j);
found = 1;
}
}
}
if (!found) {
printf("No such pair found");
}
}
int main() {
int arr[] = {3, 5, 2, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 11;
findSumIndexes(arr, n, target);
return 0;
}
```
该程序中,我们使用了两个嵌套的循环来找到所有相加等于目标值的下标。在外层循环中,我们取数组中的每个元素作为起始点,然后在内层循环中,从起始点的下一个元素开始累加,直到找到一个和等于目标值的子数组为止。如果找到了这样的子数组,则输出其下标,否则输出“没有找到这样的一对”。
需要注意的是,上面的解决方案的时间复杂度是 O(n^2),在数组很大的情况下,其性能可能会较差。如果需要更高效的解决方案,可以使用哈希表等数据结构来优化。
阅读全文