输入原则:先输入要输入数据的个数,再逐个输入序列中的元素
代码:
//采用分治法寻找序列中的最大和最小值
#include <bits/stdc++.h>
#define max(x, y) x >= y ? x : y
#define min(x, y) x <= y ? x : y
#define INF 0x3f3f3f3f
using namespace std;
const int maxn = 105; //数组最大尺寸105
int a[maxn];
int Max, Min;
void init()
{
Max = -INF;
Min = INF;
}
void PartGet(int left, int right)
{
if (left == right) {
if (a[left] > Max) Max = a[left];
if (a[left] < Min) Min = a[left];
return ;
}
int mid = (left + right) / 2;
PartGet(left, mid);
PartGet(mid+1, right);
}
int main()
{
int Size = 0;
while (cin >> Size && Size) {
for (int i = 0; i < Size; i++) cin >> a[i];
init();
PartGet(0, Size-1);
cout << "MAX = " << Max << endl;
cout << "MIN = " << Min << endl;
}
分治法找序列最大最小值

该博客介绍了如何运用分治算法在序列中高效地找到最大值和最小值。通过输入数据个数及逐个输入序列元素,实现算法的运行。文章可能包含具体的代码实现和测试案例,以此展示分治法在解决此类问题上的优势。
最低0.47元/天 解锁文章
3998

被折叠的 条评论
为什么被折叠?



