变态最大值

来源:互联网 发布:java 线程调用service 编辑:程序博客网 时间:2024/04/27 01:54

变态最大值

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述

Yougth讲课的时候考察了一下求三个数最大值这个问题,没想到大家掌握的这么烂,幸好在他的帮助下大家算是解决了这个问题,但是问题又来了。

他想在一组数中找一个数,这个数可以不是这组数中的最大的,但是要是相对比较大的,但是满足这个条件的数太多了,怎么办呢?他想到了一个办法,把这一组数从开始把每相邻三个数分成一组(组数是从1开始),奇数组的求最大值,偶数组的求最小值,然后找出这些值中的最大值。

输入
有多组测试数据,以文件结束符为标志。
每组测试数据首先一个N,是数组中数的个数。(0<N<10000,为降低题目难度,N是3的倍数)
然后是数组中的这些数。
输出
输出包括一行,就是其中的最大值。
样例输入
34 5 661 2 3 7 9 5
样例输出
6

5

代码实现:

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int n;
while(cin>>n||n!=0)
{
int a[10000],b[10000];
int j,i,m=0;
memset(b,0,sizeof(b));
for(j=1;j<=n/3;j++) 
{
int max=0,min=10000;
//对于每组的3个数字进行内部排序 
for(i=0;i<3;i++) 
{
cin>>a[i];
//奇数个 ,求最大值 
if(j%2!=0)
{
if(a[i]>max)
max=a[i]; 
}
else
//偶数个,求最小值 
{
if(a[i]<min)
min=a[i]; 
}
//判断,如果是 j%2存在,即是奇数行,则取最大值,偶数行取最小值; 
//数组b存储挑出来的值 ,一共有M个元素

j%2?(b[m++]=max):(b[m++]=min);
}
//C语言中,数组名代表数组首地址 
//调用sort函数,从小到大排序 
sort(b,b+m); 
cout<<b[m-1]<<endl; 
}
return 0;
}


原创粉丝点击