zoukankan      html  css  js  c++  java
  • nyoj 811 变态最大值

    变态最大值

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

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

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

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

    代码有点长...............
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int cmp1(int a,int b,int c)
    {
    	if(a<b)
    	a=b;
    	if(a<c)          //求三个数最大值 
    	a=c;
    	return a;
    }
    int cmp2(int a,int b,int c)
    {
    	if(a>b)
    	a=b;
    	if(a>c)         //求三个数最小值 
    	a=c;
    	return a;
    }
    bool cmp3(int a,int b)
    {
    	return a>b;         //给数组从大到小排序
    	 
    }
    int main()
    {
    	int n,m,j,i,l,s;
    	int a[10100],b[10100];
    	while(scanf("%d",&n)!=EOF)
    	{
    		s=1;
    		memset(a,0,sizeof(a));    //数组清零 
    		memset(b,0,sizeof(b));
    		for(i=1;i<=n;i++)
    			scanf("%d",&a[i]);		
    		for(i=1;i<=n;i++)
    		{
    		    if((i%3==0)&&(s%2!=0))   //求奇数组 最大 
    		    {
    		    	b[s]=cmp1(a[i],a[i-1],a[i-2]);
    		    	s++;
    		    }
    			else if((i%3==0)&&(s%2==0)) //求偶数组 最小 
    			{			
    				b[s]=cmp2(a[i-2],a[i-1],a[i]);
    				s++;
    			}
    		}
    		sort(b,b+s,cmp3);
    		printf("%d
    ",b[0]); //求最终结果  最大值 
    	}
    	return 0;
    } 
    

      

  • 相关阅读:
    Django用户认证系统(三)组与权限
    Django用户认证系统(二)Web请求中的认证
    Django用户认证系统(一)User对象
    Django QuerySet API文档
    带有Header的SOAP 请求
    环境的配置,就需要理解组件的原理和机制。
    Hotspot JVM的常用选项
    Java程序员必学的Hotspot JVM选项
    三大Java 虚拟机垃圾回收机制的比较(HotSpot, JRockit, IBM JVM)
    [原]使用Fiddler捕获java的网络通信数据
  • 原文地址:https://www.cnblogs.com/tonghao/p/4420950.html
Copyright © 2011-2022 走看看