zoukankan      html  css  js  c++  java
  • 寻找“水王”02

    1.设计思想

    ①存ID到一个数组

    ②当某水王出现次数0次时:如果新出现的和别的水王ID相同,别的水王出现次数+1;如果不是,那么它是新水王,记录并给它自己次数+1

    ③如果出现与某水王相同ID,某水王ID出现次数+1;如果出现全新ID,全部水王ID出现次数-1

    2.代码实现

    //2016-5-26 李娜
    //寻找三个发帖数量超过了1/4的“水王”
    
    #include <iostream>
    #include <fstream>
    #include <String>
    #define N 50
    using namespace std;
    
    int main()
    {
        int j;//循环用数
        int i=0;//有i个ID
        string id;//当前读取ID
        string a[N]={};//存ID
    
        ifstream infile("e:\sw.txt");
    
        if (!infile)
        {
    
            cout<<"文件打开出错!"<<endl;
    
        }
    
        while (getline(infile,id))//读取每行的ID
        {
    
            a[i]=id;
            i++;
        }
        /////////////////////////////////////////////
    ///////以上:将文件内容给a[i]///////////////////////
    ///////以下:算水王/////////////////////////////////
        ////////////////////////////////////////////
    
        int s[]={0,0,0};//分别给三个水王计数用
    
        string sw[]={"","",""};//存水王ID
    
        for(j=0;j<i;j++)
        {
            if (s[0]==0)//水王1出现0次
            {
                if (a[j]==sw[1])//如果又出现是第2个水王
                {
                    s[1]++;//水王2出现次数+1
                }
                else if (a[j]==sw[2])//如果又出现是第3个水王
                {
                    s[2]++;//水王3出现次数+1
                }
                else//这是新水王
                {
                    sw[0]=a[j];//记录新水王
                    s[0]++;//出现+1
                }
            }
    
            else if (s[1]==0)//水王2出现0次,以下代码同上含义
            {
                if (a[j]==sw[0])
                {
                    s[0]++;
                }
                else if (a[j]==sw[2])
                {
                    s[2]++;
                }
                else
                {
                    sw[1]=a[j];
                    s[1]++;
                }
            }
    
            else if (s[2]==0)//水王3出现0次,以下代码同上含义
            {
                if (a[j]==sw[0])
                {
                    s[0]++;
                }
                else if (a[j]==sw[1])
                {
                    s[1]++;
                }
                else
                {
                    sw[2]=a[j];
                    s[2]++;
                }
            }
    
            else//水王都有存数据了,有可能出现重复的数据,也有可能是新数据;所以重复了就次数+1,新的就次数都-1
            {
                if (sw[0]==a[i])
                {
                    s[0]++;
                }
                else if (sw[1]==a[i])
                {
                    s[1]++;
                }
                else if (sw[2]==a[i])
                {
                    s[2]++;
                }
                else
                    s[0]--,s[1]--,s[2]--;
            }
        }
    
        for (int k=0;k<3;k++)
        {
            cout<<sw[k]<<endl;
        }    
        
    }

    3.测试截图

    4.个人总结

    本来是用数组,一组一组比,但是出现两个结果:

    一是全变成最后一个ID

    二是全一样的ID

    我发现那样会覆盖,所以不能那样比

  • 相关阅读:
    让keep-alive不缓存
    vue tab echart始终显示100px解决办法
    加载图片失败显示默认图片
    element 文件上传传参数
    vue-cli axios 拦截器设置
    制作字体图标制作
    20道Java面试必考题
    Integer源码解析
    阿里P9架构师讲解从单机至亿级流量大型网站系统架构的演进过程
    代理详解
  • 原文地址:https://www.cnblogs.com/linanil/p/5538503.html
Copyright © 2011-2022 走看看