-->
当前位置:首页 > 题库 > 正文内容

程序填空题:最大最小问题(分治法)

Luz4年前 (2021-05-10)题库1180
用分治法查找序列中最大值和最小值。

```c++
#include
#include
#define N 1000
using namespace std;

void maxmin(int A[],int &e_max,int &e_min,int low,int high)
{
int mid,x1,x2,y1,y2;
if((high-low<=1))
{
if(A[high]>A[low]){
@@[e_max=A[high]](2);
@@[e_min=A[low]](2);
}
else{
e_max=A[low];
e_min=A[high];
}
}
else{
mid=(high+low)/2;
@@[maxmin(A,x1,y1,low,mid)](2);
@@[maxmin(A,x2,y2,mid+1,high)](2);
e_max=max(x1,x2);
e_min=min(y1,y2);
}
}

int main()
{
int A[N],i,e_max,e_min,n;
cin>>n;
for(i=0;i cin>>A[i];
@@[maxmin(A,e_max,e_min,0,n-1)](2);
cout< return 0;
}
```
### 输入格式:
第一行输入整数个数n,再依次输入n个整数。
```in
12
19 14 23 1 68 20 84 27 55 11 10 79
```

### 输出格式:
输出最大值和最小值。
```out
84 1
```







答案:
第1空:e_max=A[high]

第2空:e_min=A[low]

第3空:maxmin(A,x1,y1,low,mid)

第4空:maxmin(A,x2,y2,mid+1,high)

第5空:maxmin(A,e_max,e_min,0,n-1)

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。