zoukankan      html  css  js  c++  java
  • G

    Description

    FJ is surveying his herd to find the most average cow. He wants to know how much milk this 'median' cow gives: half of the cows give as much or more than the median; half give as much or less. 

    Given an odd number of cows N (1 <= N < 10,000) and their milk output (1..1,000,000), find the median amount of milk given such that at least half the cows give the same amount of milk or more and at least half give the same or less. 
     

    Input

    * Line 1: A single integer N 

    * Lines 2..N+1: Each line contains a single integer that is the milk output of one cow. 
     

    Output

    * Line 1: A single integer that is the median milk output. 
     

    Sample Input

    5
    2
    4
    1
    3
    5
     

    Sample Output

    3

    Hint

     INPUT DETAILS: Five cows with milk outputs of 1..5 OUTPUT DETAILS: 1 and 2 are below 3; 4 and 5 are above 3. 

    题意:实质就是输入一个整数n,下面n行每行输入一个不大于n的数且不能重复,求中位数。
    分析:这个题一开始我用的是冒泡法解决的,但是冒泡法运行太慢,于是有用sort做了一遍,快了很多。
    心得:对于像这种容易做的,我们要做的是怎样做到最优化。

    AC代码:
    冒泡法:
    #include<iostream>
    #include<cstdio>
    int main()
    {
      int n,a[20000];
      while(~scanf("%d",&n)&&n)
      {
          for(int i=0;i<n;i++)
          scanf("%d",&a[i]);
          for(int i=0;i<n-1;i++)
          {
              for(int j=i+1;j<n;j++)
              {
                  if(a[i]>a[j])
                  {
                      int m;
                  m=a[i];
                  a[i]=a[j];
                  a[j]=m ;
                  }
              }
          }
          printf("%d
    ",a[n/2]);
      }
    return 0;
    }

    sort函数:
    #include<iostream>
    #include<algorithm>
    using namespace std;
     int a[1000001];
    int main()
    {
    int n;
    
    while(cin>>n)
    {
        for(int i=0;i<n;i++)
            cin>>a[i];
        sort(a,a+n);
        cout<<a[n/2]<<endl;
    }
    return 0;
    }

















  • 相关阅读:
    PAT 乙级真题 1013.组个最小数
    PAT 乙级真题 1012.D进制的A+B
    PAT 乙级真题 1011.个位数统计
    PAT 乙级真题 1010.月饼
    PAT 乙级真题 1009.1019.数字黑洞
    PAT 乙级真题 1008.锤子剪刀布
    PAT 乙级真题 1007.A除以B
    PAT 乙级真题 1006.1016.部分A+B
    C++自定义sort函数
    VS2017如何使用scanf函数
  • 原文地址:https://www.cnblogs.com/lbyj/p/5680614.html
Copyright © 2011-2022 走看看