• 变态最大值


    变态最大值
    时间限制: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

    
    
      1 /*错误程序 理解错题意 
      2 #include<stdio.h>
      3 int main(){
      4      int i,j,n,s,t,max,min;
      5      int a[1000];
      6    while(scanf("%d",&n)!=EOF){
      7         for(i=0;i<n;i++)
      8    scanf("%d",&a[i]);
      9        max=0;
     10        min=0;//min赋值0,则是最小的,min永远远是0无法记录后来排的数 
     11        
     12        for(i=0;i<n;i++){//i=0,循环将从第一开始记录,这样记录的max将是整个数组的最大值,非要求的数 
     13             if(max<a[i])
     14                
     15                   max=a[i];}
     16       for(i=0;i<n;i++){
     17    
     18             if(min>a[i])
     19             
     20                min=a[i];
     21           }
     22          
     23            s=n/3;
     24       if(s%2==0)
     25          printf("%d
    ",min);
     26          else 
     27         printf("%d
    ",max);
     28      }
     29      return 0;
     30     }
     31     */
     32      
     33     
     34     
     35 
     36 /*    
     37 #include<stdio.h>
     38 int main(){
     39      int i,j,n,s,t,max,min;
     40      int a[1000];
     41    while(scanf("%d",&n)!=EOF){
     42         for(i=0;i<n;i++)
     43    scanf("%d",&a[i]);
     44       
     45        
     46     for(j=n-3;j<=n-1;j++)          //冒泡排序, 将导致只有3组数的结果错误 
     47        for(i=n-4;i<=n-1-j;i++)
     48         if(a[i]>a[i+1])
     49       {t=a[i];a[i]=a[i+1];a[i+1]=t;}
     50          
     51            s=n/3;
     52       if(s%2==0)
     53          printf("%d
    ",a[n-3]);
     54          else 
     55         printf("%d
    ",a[n-1]);
     56      }
     57      return 0;
     58     }
     59     
     60 
     61 
     62        */
     63        修改正确结果 
     64 #include<stdio.h>
     65 int max(int a,int b,int c)
     66   {
     67       int t;
     68        if(a>b)
     69     {t=a,a=b,b=t;}
     70       if(a>c)
     71     {t=a,a=c,c=t;}
     72       if(b>c)
     73     {t=b,b=c,c=t;}
     74       return c;
     75   } 
     76 int min(int a,int b,int c)
     77   {
     78       int t;
     79        if(a>b)
     80     {t=a,a=b,b=t;}
     81       if(a>c)
     82     {t=a,a=c,c=t;}
     83       if(b>c)
     84     {t=b,b=c,c=t;}
     85         
     86     return a;
     87   }
     88 int main(){
     89      int i,n,t;
     90      int a[10100],b[10100];
     91    while(scanf("%d",&n)!=EOF){
     92         for(i=0;i<n;i++)
     93    scanf("%d",&a[i]);
     94       for(i=0;i<n/3;i++)
     95           {
     96               if(i%2==0)
     97                 b[i]=max(a[i*3],a[i*3+1],a[i*3+2]);
     98               else
     99               b[i]=min(a[i*3],a[i*3+1],a[i*3+2]); 
    100           } 
    101       t=0;
    102          for(i=0;i<n/3;i++)
    103             {
    104                 if(t<b[i])
    105                    t=b[i];
    106             }
    107     printf("%d
    ",t);}
    108        return 0;
    109    }
    110    
    
    
    
     
  • 相关阅读:
    Springboot中使用Scala开发
    aliyun阿里云Maven仓库地址
    css文字滚动
    随笔
    下拉菜单事件
    微信分享
    微信分享功能
    随笔记
    全屏设置
    判定复选框的选中状态
  • 原文地址:https://www.cnblogs.com/acmgym/p/3648452.html
Copyright © 2020-2023  润新知