输入)定义一个整型数组array和一个整数target,找出(输出)数组array中两个数的和与乘为target的所有组合。c语言
时间: 2024-10-07 11:02:28 浏览: 27
leetcode2sumc-array_leetcode:leetcode刷题总结,此部分是array
在C语言中,你可以使用两层循环遍历数组,一种常见的解法是通过哈希表(这里可以简化为一个临时数组或者直接在循环过程中检查是否已找到目标值的另一半)来查找满足条件的数对。以下是基本的步骤:
```c
#include <stdio.h>
// 函数声明
void findPair(int array[], int n, int target, int* found, int sum);
int main() {
int array[] = {2, 7, 11, 15}; // 你的输入数组
int target = 9; // 目标值
int n = sizeof(array) / sizeof(array[0]);
int found[n]; // 初始化一个标记数组
findPair(array, n, target, found, 0); // 调用函数
printf("Number of pairs with sum %d: ", target);
for (int i = 0; i < n; ++i) {
if (found[i]) {
printf("(%d, %d) ", array[i], target - array[i]);
}
}
return 0;
}
// 查找函数
void findPair(int array[], int n, int target, int* found, int currentSum) {
for (int i = 0; i < n; ++i) {
if (currentSum + array[i] == target) {
found[i] = 1; // 找到一对,标记为1
printf("(%d, %d)\n", array[i], target - array[i]); // 输出这对数
} else if (currentSum < target && found[i] == 0) {
// 如果当前和小于目标且元素未被标记,尝试加下一个元素
findPair(array, n, target, found, currentSum + array[i]);
}
}
}
```
阅读全文