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

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

  • 相关阅读:
    WEBSERVICE 分析器错误信息: 未能创建类型
    Powerdesigner中表导出sql语句关于字段注释乱码的问题
    配置redis服务器允许远程连接
    [转]ubuntu系统重新分区、根目录扩容
    [转]自动驾驶平台Apollo 2.5环境搭建
    [转]在ROS下使用zeroconf配置多机通信
    ROS 安装完成后运行小乌龟示例程序
    [转]RoboWare Studio的使用和发布器/订阅器的编写与测试
    【转】ROS之topic和service通信比较
    【转】贝叶斯公式的直观理解(先验概率/后验概率)
  • 原文地址:https://www.cnblogs.com/linanil/p/5538503.html
Copyright © 2011-2022 走看看