用c语言暴力枚举法实现two sums的完整代码
时间: 2024-02-18 14:04:16 浏览: 77
好的,下面是用 C 语言实现暴力枚举法求 Two Sum 的完整代码:
```c
#include <stdio.h>
int* twoSum(int* nums, int numsSize, int target) {
static int indices[2];
for(int i = 0; i < numsSize - 1; i++) {
for(int j = i + 1; j < numsSize; j++) {
if(nums[i] + nums[j] == target) {
indices[0] = i;
indices[1] = j;
return indices;
}
}
}
return NULL;
}
int main() {
int nums[] = {2, 7, 11, 15};
int target = 9;
int* indices = twoSum(nums, 4, target);
if(indices != NULL) {
printf("The indices are [%d, %d]\n", indices[0], indices[1]);
} else {
printf("No solution found.\n");
}
return 0;
}
```
在这个代码中,我们定义了一个名为 `twoSum` 的函数,该函数接受一个整数数组 `nums`、数组的大小 `numsSize` 和一个目标整数 `target` 作为输入,并返回一个包含两个整数的静态数组,其值为输入数组中满足两数之和等于目标数的两个数的下标。如果找不到这样的两个数,则返回空指针。
在 `twoSum` 函数中,我们使用两个嵌套的循环来遍历输入数组中的所有数对,并检查它们的和是否等于目标数。如果找到了这样的一对数,则将它们的下标存储在静态数组 `indices` 中,并返回该数组。
在 `main` 函数中,我们定义了一个整数数组 `nums`,该数组包含示例输入 `[2, 7, 11, 15]`,以及一个目标整数 `target`,其值为 `9`。我们将这些值传递给 `twoSum` 函数,并将返回的结果存储在指针变量 `indices` 中。如果 `indices` 不为 `NULL`,则打印出它包含的两个下标值,否则打印出找不到解决方案的消息。
注意:本代码使用了静态数组来存储结果,因此在每次调用 `twoSum` 函数时,上一次调用的结果会被覆盖。如果需要多次调用该函数,请使用动态内存分配来避免这种问题。
阅读全文