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

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

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

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

void max1max2(int a[],int low,int high,int &max1,int &max2)
{
if (low==high)
{ max1=a[low]; max2=INF;}
else if (low==high-1)
{
max1=;
max2=;
}
else
{ int mid=(low+high)/2;
int lmax1,lmax2;
;
int rmax1,rmax2;
;
if (lmax1>rmax1)
{ max1=lmax1;
max2=max(lmax2,rmax1);
}
else
{ max1=rmax1;
max2=max(lmax1,rmax2);
}
}
}

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

### 输出格式:
输出最大值和次大值。
```out
84 79
```







答案:
第1空:max(a[low],a[high])

第2空:min(a[low],a[high])

第3空:max1max2(a,low,mid,lmax1,lmax2)

第4空:max1max2(a,mid+1,high,rmax1,rmax2)

第5空:max1max2(A,0,n-1,max1,max2)

发表评论

访客

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