• zoj 2132 the most frequent number


    the  most frequent number

    CE: Gcc注释 用/**/

    MLE: 快排 取中位数

    /*zoj 2132 the most frequent number
    quick sort
    */
    # include <stdio.h>
    # include <stdlib.h>
    # define MAXN 250005

    int compare (const void * a, const void * b)
    {
    return ( *(int*)a - *(int*)b );
    }
    int main()
    {
    int a[MAXN];
    int L, i;
    while (scanf("%d", &L)==1)
    {
    for (i=0; i<L; ++i)
    scanf("%d", &a[i]);
    qsort(a, L, sizeof(int), compare);
    printf("%d\n",a[L/2]);
    }
    return 0;
    }

    看了别人的代码,

    /*
    from 百度空间 kobeddshow
    http://hi.baidu.com/kobeddshow/blog/item/26bc91ad166ba09246106439.html
    */
    # include<stdio.h>
    int main()
    {
    int n,a,i,ans,k;
    while(scanf("%d",&n) != EOF )
    {
    k = 0;
    for(i=0; i<n; i++)
    {
    scanf("%d",&a);
    if (k == 0) ans=a, k=1;
    else if(ans == a) ++k;
    else --k;
    }
    printf("%d\n",ans);
    }
    return 0; /*没有这一行,提示程序非零退出 */
    }

    这个方法充分利用了要求的数比总数一半还多这个条件:只有比一半多,才能保证保留要求的ans,比一半少一个都不行。
    看书算法技巧方面的不够多,做题也是刚开始,要坚持不懈!

    TLE: 自定义快排 取中位数

    View Code
    /*zoj 2132 the most frequent number
    quick sort
    */
    # include <stdio.h>
    # include <stdlib.h>
    # define MAXN 250005
    void quick_sort(int *a, int left, int right);
    int main()
    {
    int a[MAXN];
    int L, i;
    while (scanf("%d", &L)==1)
    {
    for (i=1; i<=L; ++i)
    scanf("%d", &a[i]);
    quick_sort(a, 1, L);
    printf("%d\n",a[L/2+1]);
    }
    return 0;
    }
    void quick_sort(int *a, int left, int right)
    {
    int tmp, i, last;
    if (left >= right) return;
    tmp = a[left];
    a[left] = a[(left+right)>>1];
    a[(left+right)>>1] = tmp;
    last = left;
    for (i = left+1; i <= right; ++i)
    if (a[i]<a[left] && (++last)!=i) /*短路*/
    {
    tmp = a[last];
    a[last] = a[i];
    a[i] = tmp;
    }
    tmp = a[last];
    a[last] = a[left];
    a[left] = tmp;
    quick_sort(a, left, last-1);
    quick_sort(a,last+1, right);
    }
  • 相关阅读:
    Filter的基本配置
    11.3、4(filter的生命周期和API)、
    11.1(过滤器概述)、(创建过滤器filter)
    10.6商品的促销活动,(未解决)
    php 调用常量或者变量的时候千万不能加引号""'' 不然不生效
    thinkphp5 if else的表达式怎么写?
    request() 获取参数是数组不是对象
    thinkphp5 PATHINFO路由正确的访问方式
    thinkphp5 的iframe文件怎么显示到html里面
    thinkphp5引入外部css js文件
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2357625.html
Copyright © 2020-2023  润新知