两数之和c语言暴力枚举法
时间: 2024-02-24 22:00:35 浏览: 37
以下是两数之和的 C 语言暴力枚举法解法:
```c
#include <stdio.h>
int main() {
int nums[] = {2, 7, 11, 15};
int target = 9;
int size = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < size; i++) {
for (int j = i + 1; j < size; j++) {
if (nums[i] + nums[j] == target) {
printf("[%d, %d]\n", i, j);
return 0;
}
}
}
printf("No solution found.\n");
return 0;
}
```
这个解法的时间复杂度是 O(n^2),并不是最优解法,但在数据规模比较小的情况下可以使用。
相关问题
用c语言暴力枚举法实现two sums完整代码
以下是用C语言实现Two Sum问题的暴力枚举法的完整代码:
```c
#include <stdio.h>
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
int i, j;
int *result = (int*)malloc(2 * sizeof(int)); // 为结果数组分配内存
*returnSize = 2; // 设置结果数组大小为2
for(i = 0; i < numsSize - 1; i++) {
for(j = i + 1; j < numsSize; j++) {
if(nums[i] + nums[j] == target) {
result[0] = i;
result[1] = j;
return result; // 返回结果数组的指针
}
}
}
return NULL; // 没有找到符合要求的结果,返回 NULL
}
int main() {
int nums[] = {2, 7, 11, 15};
int target = 9;
int returnSize;
int *result = twoSum(nums, 4, target, &returnSize);
if(result != NULL) {
printf("[%d, %d]\n", result[0], result[1]);
free(result); // 释放结果数组的内存
} else {
printf("No result found.\n");
}
return 0;
}
```
该代码中的`twoSum`函数接受一个整数数组`nums`、数组大小`numsSize`、目标值`target`和一个指向结果数组大小的指针`returnSize`。该函数使用两个嵌套的循环来枚举所有可能的组合,如果找到符合要求的组合,则将结果存储在一个动态分配的结果数组中,并返回该数组的指针。如果没有找到符合要求的组合,则返回`NULL`。
在`main`函数中,我们定义了一个整数数组`nums`、目标值`target`和一个返回结果数组大小的变量`returnSize`。我们调用`twoSum`函数来解决Two Sum问题,并将结果存储在一个名为`result`的指针中。最后,我们检查`result`是否为`NULL`,如果是,则打印一条消息表示未找到符合要求的结果;否则,我们打印结果数组的值,并释放结果数组的内存。
用c语言暴力枚举法实现two sums的完整代码
好的,下面是用 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` 函数时,上一次调用的结果会被覆盖。如果需要多次调用该函数,请使用动态内存分配来避免这种问题。