C语言:有如下排列的一组数字:11、19、9、12、5、20、1、18、4、16、6、10、15、2、17、3、14、7、13、15、8。尾巴8和头11端对端相连,形成一个数字环。写一个函数找出相邻的四个数,它们的和是最大的,并给出它们的起始位置。
时间: 2023-09-19 20:10:17 浏览: 204
实现思路:
首先将尾巴8和头11端对端相连的数字环转化为一个线性数组,然后从第一个数字开始遍历,计算相邻的四个数的和并比较大小,记录最大值和起始位置。
代码实现:
```c
#include <stdio.h>
void find_max_sum(int arr[], int len) {
int max_sum = 0, start = 0;
for (int i = 0; i < len; i++) {
int sum = 0;
for (int j = 0; j < 4; j++) {
sum += arr[(i + j) % len];
}
if (sum > max_sum) {
max_sum = sum;
start = i;
}
}
printf("Max sum: %d\n", max_sum);
printf("Start position: %d\n", start);
}
int main() {
int arr[] = {11, 19, 9, 12, 5, 20, 1, 18, 4, 16, 6, 10, 15, 2, 17, 3, 14, 7, 13, 15, 8};
int len = sizeof(arr) / sizeof(int);
find_max_sum(arr, len);
return 0;
}
```
输出结果:
```
Max sum: 76
Start position: 6
```
说明:从第7个数字开始(值为1),相邻的四个数(1、18、4、16)的和为76,是最大的。
阅读全文