题目描述 用分治法求一个整数序列中的最大值。 输入 输入有多行,第一行是一个整数n,表示后面有n行。从第二行开始的n行,每行包含用空格隔开的多个整数,第一个整数是m,表示本行后面还有m个用空格隔开整数。 输出 输出有多行,对应输入中从第二行开始,每一行中m个整数中的最大值。
时间: 2024-02-24 16:56:46 浏览: 86
好的,下面是一个使用分治法求多个整数序列中最大值的C语言代码示例:
```c
#include <stdio.h>
int max(int a, int b) {
return a > b ? a : b;
}
int find_max(int arr[], int left, int right) {
if (left == right) { // 如果只有一个元素,直接返回
return arr[left];
} else {
int mid = (left + right) / 2;
int left_max = find_max(arr, left, mid); // 递归查找左半部分最大值
int right_max = find_max(arr, mid+1, right); // 递归查找右半部分最大值
return max(left_max, right_max); // 返回左右部分中的最大值
}
}
int main() {
int n;
scanf("%d", &n); // 读入序列个数
for (int i = 0; i < n; i++) {
int m;
scanf("%d", &m); // 读入序列长度
int arr[m];
for (int j = 0; j < m; j++) {
scanf("%d", &arr[j]); // 读入整数序列
}
int max_num = find_max(arr, 0, m-1); // 查找最大值
printf("%d\n", max_num); // 输出最大值
}
return 0;
}
```
在上面的代码中,利用循环读入了多个整数序列,并对每一个序列调用 `find_max()` 函数查找最大值,并输出最大值。每个序列的第一个整数表示该序列的长度,后面的整数是该序列中的元素。
输入示例:
```
3
5 1 2 3 4 5
4 2 4 1 3
6 3 6 2 4 5 1
```
输出示例:
```
5
4
6
```
其中第一个序列的最大值是5,第二个序列的最大值是4,第三个序列的最大值是6。
阅读全文