nyoj811变态最大值

这道题做的我很心累,既要考虑时间问题,又要考虑不能太过复杂,于是我用了这种方法,主要是max的赋值不好确定,并且min的值也不好确定,因为后面需要比较,于是我开了一个数组存储那些挑选出来的值,然后在将第一个值赋给max,这样就不会出现问题,但是我的求最值函数写的过于复杂,看到有人写成了这个样子,也是很佩服。

int max(int a,int b,int c){
    int t;
    t=a>b?a:b;
    t=t>c?t:c;
    return t;
}
int min(int a,int b,int c){
    int t;
    t=a<b?a:b;
    t=t<c?t:c;
    return t;
}

当然还有更简洁的代码,但是可读性上这个略胜一筹,更简洁的如下

//这种是宏定义的形式,还有其实是这种改编而来的,是很简洁,但是还是不太好理解,第一次估计写不出来这样的代码。
#define max(n1,n2,n3) a>(b>c?b:c)?a:(b>c?b:c)
#define min(n1,n2,n3) a>(b>c?c:b)?(b>c?b:c):a

不说了,贴代码。

> 描述

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

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

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

    3
    4 5 6
    6
    1 2 3 7 9 5

样例输出

    6
    5

#include<iostream>
using namespace std;
int max(int n1,int n2,int n3){
    int temp;
    if(n1>n2){
        temp=n1;
        n1=n2;
        n2=temp;
    }
        if(n1>n3){
        temp=n1;
        n1=n3;
        n3=temp;
    }
        if(n2>n3){
        temp=n2;
        n2=n3;
        n3=temp;
    }
    return n3;
} 
int min(int n1,int n2,int n3){
    int temp;
    if(n1>n2){
        temp=n1;
        n1=n2;
        n2=temp;
    }
        if(n1>n3){
        temp=n1;
        n1=n3;
        n3=temp;
    }
        if(n2>n3){
        temp=n2;
        n2=n3;
        n3=temp;
    }
    return n1;
} 
int main(){
    int num;
    while(cin>>num){
        int top=0;
        int n1,n2,n3;
        int book[10000];
        int i=0;
        while(num){
            cin>>n1>>n2>>n3;
            num-=3;
            top+=3;



            if(top/3%2!=0){
            book[i++]=max(n1,n2,n3);
        }



        else{
            book[i++]=min(n1,n2,n3);
        }



    }
    int max=book[0];
    for(int j=0;j<i;j++){
        if(book[j]>max)max=book[j];
    }
    cout<<max<<endl;
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_39587440/article/details/78178133