• 寻找“水王”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

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

  • 相关阅读:
    numpy中的随机数模块
    windows下用pycharm安装tensorflow简易教程
    Tensor是神马?为什么还会Flow?
    TypeError: 'NoneType' object is not subscriptable
    pycharm 运行错误信息显示乱码
    pycharm terminal 'import' 不是内部或外部命令,也不是可运行的程序
    pycharm 出现 "PEP:8 expected 2 blank lines ,found 0"
    TensorFlow升级1.4:Cannot remove entries from nonexistent file libsite-pack
    win10 python3.5 自动补全设置
    python pip NameError:name 'pip' is not defined”
  • 原文地址:https://www.cnblogs.com/linanil/p/5538503.html
Copyright © 2020-2023  润新知