zoukankan      html  css  js  c++  java
  • HDU计算机学院大学生程序设计竞赛(2015’12)1008 Study Words

    题意:

    输入一篇文章,输出出现最多的10个单词

    不包括old里的已有单词

    出现次数相同按字典序大小

    简单模拟,map记录个数

    没有什么坑点

    然后sort一下

    用string 可以直接比较字典序大小

    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<iostream>
    #include<algorithm>
    #include<map>
    #include<math.h>
    using namespace std;
    char s[205],m[]={"</article>"};
    struct node
    {
        string a;
        int v;
    }p[150005];
    bool cmp(node a,node b)
    {
        if(a.v==b.v) return a.a<b.a;
        return a.v>b.v;
    }
    int main()
    {
        int i,j,n;
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%s",s);
            map<string,int> f;
            while(scanf("%s",s))
            {
                int l=strlen(s);
                for(i=0;i<l;i++)
                {
                    if(s[i]>='A'&&s[i]<='Z') s[i]+=32;
                }
                if(s[0]=='<') break;f[s]=-1;
            }
            scanf("%s",s);
            int cnt=0;
            while(scanf("%s",s))
            {
                int l=strlen(s);
                if(l==10)
                {
                    for(i=0;i<l;i++)
                    {
                        if(s[i]==m[i]) continue;
                        break;
                    }
                    if(i==10) break;
                }
                string tp="";
                for(i=0;i<l;i++)
                {
                    if(s[i]>='A'&&s[i]<='Z') s[i]+=32;
                    if(s[i]>='a'&&s[i]<='z')
                        tp+=s[i];
                    else
                    {
                        if(tp=="") continue;
                        if(f[tp]==0)
                        {
                            f[tp]=++cnt;
                            p[cnt].a=tp;
                            p[cnt].v=1;
                        }
                        else
                            p[f[tp]].v++;
                        tp="";
                    }
                }
                if(tp=="") continue;
                        if(f[tp]==0)
                        {
                            f[tp]=++cnt;
                            p[cnt].a=tp;
                            p[cnt].v=1;
                        }
                        else
                            p[f[tp]].v++;
            }
            sort(p+1,p+1+cnt,cmp);
            for(i=1;i<=10&&i<=cnt;i++) cout<<p[i].a<<endl;
            cout<<endl;
        }
        return 0;
    }

      

  • 相关阅读:
    rsync命令详解
    Android Studio手动下载配置Gradle的方法
    "standard,singleTop,singleTask,singleInstance"-Android启动模式
    "Activity" 总结
    Android应用开发完全退出程序的通用方法
    SVN服务器使用(一)
    使用PyInstaller打包Python程序
    py2exe把python程序转换exe
    python 下载安装setuptools及pip应用
    Python的库和资源(转)
  • 原文地址:https://www.cnblogs.com/Woo95/p/5078318.html
Copyright © 2011-2022 走看看