题单练习 递归

A7118 | 求区间最大值(填空题)

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

给定一个长度为 $n$ 的整数数组 $a_1,a_2,\dots,a_n$。请你使用分治递归计算整个数组的最大值。

分治思想:把区间 $[l,r]$ 拆成左右两半 $[l,mid]$ 与 $[mid+1,r]$,分别递归求最大值,再合并答案。

具体例子


  • 若 $a=[2,7,1,5]$,可拆成 $[2,7]$ 与 $[1,5]$:左半最大为 $7$,右半最大为 $5$,合并得到整体最大为 $7$。
  • 若区间只有一个数(例如 $[l,l]$),该区间最大值就是这个数本身。

输入格式

第一行包含一个整数 $n$。
第二行包含 $n$ 个整数 $a_1,a_2,\dots,a_n$。

输出格式

输出一行一个整数,表示数组最大值。

输入输出样例

输入 #1
5
2 7 1 9 3
输出 #1
9
C++ 编辑器
输入
输出