c语言利用分治法求一组数据的和,测试输入: 10 //数据的总个数 -5 //此行及以下为具体的每个数据 5 10 99 100 30 60 98 -10 -1 预期输出:分治法求出数组元素的和为:386
时间: 2024-02-18 11:02:57 浏览: 59
好的,这里给您提供一个基于分治法的 C 语言代码实现:
```
#include <stdio.h>
int sum(int arr[], int start, int end) {
if (start == end) { // 如果只有一个元素,直接返回该元素的值
return arr[start];
} else {
int middle = (start + end) / 2; // 将数组分成两半
int leftSum = sum(arr, start, middle); // 递归计算左半边数组的和
int rightSum = sum(arr, middle + 1, end); // 递归计算右半边数组的和
return leftSum + rightSum; // 返回左右两半的和
}
}
int main() {
int n, i, s;
scanf("%d", &n); // 读入数据总个数
int arr[n];
for (i = 0; i < n; i++) {
scanf("%d", &s); // 读入每个数据
arr[i] = s;
}
int totalSum = sum(arr, 0, n - 1); // 调用分治法计算数组元素的和
printf("分治法求出数组元素的和为:%d\n", totalSum); // 输出结果
return 0;
}
```
将上述代码保存为 sum.c 文件,编译运行后输入测试数据,即可得到预期输出:
```
$ gcc sum.c -o sum
$ ./sum
10
-5
5
10
99
100
30
60
98
-10
-1
分治法求出数组元素的和为:386
```
阅读全文