zoukankan      html  css  js  c++  java
  • 发帖水王的加强版

      发帖水王:一堆数中有一个数字出现的次数多于1/2,问那个数?

      比较简单的思路就是两个变量,一个记录当前的数字a,另一个记录当前数字出现的次数size,下一个数字与a相同的时候,size++,不同的时候:size>1,则size--;否则更新a,size=1;

      

      加强版:一堆数中有3个数字出现的次数多于1/4,问是哪三个数?

      思维迁移,用3个{a,size}量保存当前更新的数,下一个数字的时候,看这三个里面是否有这个数字存在,若是,则相应的size++;否则,找出sizez最小的那个量,size>1,则size--;否则更新a,size=1;

      

    #include<stdio.h>
    #include<iostream>
    #include<queue>
    using namespace std;
    
    struct data{
        int a;
        int size;
    }s[3];
    
    int main(){
        int n,i,temp,j;
    
        for(i=0;i<3;i++){
            s[i].a=0;
            s[i].size=0;
        }
        scanf("%d",&n);
    
        for(i=1;i<=n;i++){
            scanf("%d",&temp);
    
            bool same=0;
            int sj,min=99999999;
            for(j=0;j<3;j++){
                if(s[j].a==temp){
                    same=1;
                    sj=j;
                    break;
                }
                if(min>s[j].size){
                    min=s[j].size;
                    sj=j;
                }
            }
    
            if(same==1){
                s[sj].size++;
            }else{
                if(s[sj].size==0){
                    s[sj].size=1;
                    s[sj].a=temp;
                }else{
                    s[sj].size--;
                }
            }
        }
    
        for(i=0;i<=2;i++){
            printf("%d
    ",s[i].a);
        }
    
    
        getchar();
        getchar();
        return 0;
    }
    View Code
  • 相关阅读:
    HOWTO get multiple value from the same name checkbox elements or radiobution elements
    你家有几台电脑
    *qian翻
    nginx 域名绑定
    linode设置汇总
    how to relize 301 redirect on bottle
    Nginx禁止未在服务器绑定的域名访问
    linode设置汇总
    sogouq免费企邮
    linode设置汇总
  • 原文地址:https://www.cnblogs.com/huhuuu/p/3495760.html
Copyright © 2011-2022 走看看