erdos数

#include <iostream>

#include "Erdos.h"

typedef struct data

{

    string m_str;

    int m_count;

}Data;



map<string, int>g_map;//字典映射

vector<string>g_str;//作者姓名字符串

vector<Data>g_name;//作者和出现的次数


//查找名字是否在字典中

int searchIndex(string &aName)

{

    map<string, int>::iterator it = g_map.find(aName);

    if (it != g_map.end())

        return (*it).second;

    return -1;

}

//将姓名字符串分单个字符串

vector < string > filter(string &aName)

{

    vector < string > name;

    int begin = 0;

    int end = (int)aName.find(".,", begin);

    

    while (end != string::npos)

    {

        name.push_back(aName.substr(begin, end - begin+1));

        begin = end + 2;

        end = (int)aName.find(".,", begin);

    }

    

    if (begin < (aName.length() - 1))

    {

        name.push_back(aName.substr(begin));

    }

    return name;

}


//设置作者的erdos的数字

void erdos_number(string &author, int number)

{


    vector <string> name = filter(author);

    for (int i = 0; i < name.size(); i++)

    {

        string temp = name[i];

        if (searchIndex(name[i]) < 0)

        {

            Data tmp;

            tmp.m_str = name[i];

            tmp.m_count = number;

            g_name.push_back(tmp);

            g_map.insert(pair< string, int>(name[i],number));

        }

    }


}


//调用

void erdos()

{

    g_map.clear();

    g_map.insert(pair< string, int>("Erdos,P.",1));

    Data tempData;

    tempData.m_str = string("Erdos,P.");

    tempData.m_count = 1;

    g_name.push_back(tempData);

    for (int i = 0;i < g_str.size();++i)

    {

        for (int j = 0;j < g_name.size();j++)

        {//有待优化

            string tmp1 = g_name[j].m_str;

            string tmp2 = g_str[i];

            if (g_str[i].find(g_name[j].m_str) != string::npos)

            {

                if (g_name[j].m_str != "Erdos,P.")

                {

                    erdos_number(g_str[i],g_name[j].m_count+1);

                }

                else

                {

                    erdos_number(g_str[i],g_name[j].m_count);

                }

                break;

            }

        }

    }

}

int main(int argc, const char * argv[])

{


    g_str.push_back(string("Erdos,P.,Smith,M.N.,Martin,G."));

    g_str.push_back(string("Erdos,P.,Reisig,W."));

    g_str.push_back(string("Smith,M.N.,Chen,X."));

    g_str.push_back(string("Smith,M.N.,Chen,Y."));

    g_str.push_back(string("Smith,M.D.,Chen,Y."));

    g_str.push_back(string("Jablonski,T.,Hsueh,Z."));

  

    erdos();

    char c[][20] = {"Smith,M.N.","Hsueh,Z.","Chen,X."};

    

    for (map <string, int>::iterator it = g_map.begin(); it != g_map.end();++it)

    {

        cout<<(*it).first<<"  ";

        cout<<(*it).second<<endl;

    }

    

    for (int i = 0;i < 3;++i)

    {

        string str(c[i]);

        int  tmp = searchIndex(str);

        if (tmp!=-1)

        {

            cout<<str<<" "<<tmp<<endl;

        }

        else

        {

            cout<<str<<" "<<"infinity"<<endl;

        }

    }

    return 0;

}


'[IT18掌www.it18zhang.com]001.Hadoop基础篇.pptx' '[IT18掌www.it18zhang.com]014.Hadoop Win7开启网络访问.pptx' '[IT18掌www.it18zhang.com]Kafka.pptx' '[IT18掌www.it18zhang.com]002.VMware下载与安装.pptx' '[IT18掌www.it18zhang.com]015.Hadoop 架构分析.pptx' '[IT18掌www.it18zhang.com]KVM.pptx' '[IT18掌www.it18zhang.com]003.Ubuntu下载与虚拟机下安装.pptx' '[IT18掌www.it18zhang.com]016.Hadoop 架构分析之启动脚本分析.pptx' '[IT18掌www.it18zhang.com]Scala.pptx' '[IT18掌www.it18zhang.com]004.Ubuntu常用命令.pptx' '[IT18掌www.it18zhang.com]017.Hadoop 架构分析之启动脚本总结.pptx' '[IT18掌www.it18zhang.com]Spark Graph编程指南.pptx' '[IT18掌www.it18zhang.com]005.Ubuntu目录与权限.pptx' '[IT18掌www.it18zhang.com]018.Hadoop MapReduce初识.pptx' '[IT18掌www.it18zhang.com]Spark SQL DataFrame Dataset编程指南.pptx' '[IT18掌www.it18zhang.com]006.Ubuntu软件包桌面与增强工具.pptx' '[IT18掌www.it18zhang.com]019.Hadoop MapReduce原理.pptx' '[IT18掌www.it18zhang.com]Spark Streaming编程指南.pptx' '[IT18掌www.it18zhang.com]007.Ubuntu本地软件源与iso制作.pptx' '[IT18掌www.it18zhang.com]019.Hadoop YARN事件分发原理.pptx' '[IT18掌www.it18zhang.com]Spark编程指南.pptx' '[IT18掌www.it18zhang.com]008.Ubuntu虚拟机克隆与Mac地址生成与网络连接方式.pptx' '[IT18掌www.it18zhang.com]020.Hadoop HDFS.pptx' '[IT18掌www.it18zhang.com]Spark编译运行处理.pptx' '[IT18掌www.it18zhang.com]009.Hadoop-Ubuntu下JDK与Hadoop安装配置.pptx' '[IT18掌www.it18zhang.com]021.Hadoop HDFS CLI.pptx' '[IT18掌www.it18zhang.com]Spark基础.pptx' '[IT18掌www.it18zhang.com]010.Hadoop配置-独立与伪分布式模式.pptx' '[IT18掌www.it18zhang.com]Ambari Hadoop集群管理工具.pptx' '[IT18掌www.it18zhang.com]Spark调优.pptx' '[IT18掌www.it18zhang.com]011.Hadoop配置-完全分布式模式.pptx' '[IT18掌www.it18zhang.com]Avro.pptx' '[IT18掌www.it18zhang.com]ZooKeeper.pptx' '[IT18掌www.it18zhang.com]012.Hadoop Windows下免Cygwin伪分布安装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值