zoukankan      html  css  js  c++  java
  • STL Map hdu1004,1075,1263

    map 的使用  注意first 为key值  second 是value值

    然后就是在杭电上头文件对于map的map<string,int >::iterator i;的操作。使用#include<cstring>会编译错误。。<string>则不会

    对于hdu1263,由于map<string,int>存储是按KEY值的字母顺序排序,所以这里免去了排序的步骤。

    STL很强大!

    hdu1004:

    #include<iostream>
    #include<string>
    #include<map>
    using namespace std;
    map<string,int>M;
    map<string,int>::iterator p,q;
    int n;
    int main()
    {
        string str;
        while(scanf("%d",&n),n)
        {
           M.clear(); //清空
           while(n--)
           {
              cin>>str;
              if(M[str]==0) //插入
                M[str]=1;
              else 
                  M[str]++;
           }
           int k=-1;
           for(p=M.begin();p!=M.end();p++)   //查找
           {
             if((p->second)>k)
             {
                k=p->second;
                q=p;
             }
           }
          cout<<q->first<<endl; 
        }
        return 0;
    }


     然后是hdu1075

    #include <stdlib.h>
    #include <iostream>
    #include <stdio.h>
    #include<string>
    #include<map>
    using namespace std;
    map<string,string> m;
    map<string,string>::iterator it;
    char c[3020];
    int main()
    {
        char s[22],t[22],tmp[22];
        scanf("%s",s);
        while(scanf("%s",s)!=EOF)
        {
            if(!strcmp(s,"END"))
                break;
            scanf("%s",t);
            m[t]=s;
        }
        scanf("%s",s);
        getchar();
        while(gets(c))
        {
            if(!strcmp(c,"END"))
                break;
            int len=strlen(c);
            int j=0;
            for(int i=0;i<len;i++)
            {
                if(c[i]>='a'&&c[i]<='z')
                {
                    tmp[j]=c[i];
                    j++;
                }
                else
                {
                    tmp[j]='\0';
                    it=m.find(tmp);
                    if(it!=m.end())
                    {
                        char ww[22];
                        //ww=it->second;
                        cout<<it->second;
                        //printf("%s",it->second);
                    }
                    else
                    {
                        printf("%s",tmp);
                    }
                    printf("%c",c[i]);
                    j=0;
                }
            }
            printf("\n");
        }
        return 0;
    }
    


    最后hdu1263

    #include<iostream>
    #include<string>
    #include<cstdio>
    #include<map>
    using namespace std;
    
    int main()
    {
        map<string,map<string,int> > a;
        map<string,int> b;
        map<string,map<string,int> >::iterator i;
        map<string,int>::iterator j;
        int T,m,tmp;string s,tb;
        cin>>T;
        while(T--)
        {
            a.clear();
            b.clear();
            cin>>m;
            while(m--)
            {
                cin>>s>>tb>>tmp;
                a[tb][s]+=tmp;
            }
            for(i=a.begin();i!=a.end();i++)
            {
                cout<<i->first<<endl;
                b=i->second;
                for(j=b.begin();j!=b.end();j++)
                {
                    cout<<"   |----"<<j->first<<"("<<j->second<<")"<<endl;
                }
            }
            if(T!=0)
                printf("\n");
        }
    }
    


     

  • 相关阅读:
    atitit查询表修改表字段没反应--解锁锁定的表
    atitit.自适应设计悬浮图片的大小and 位置
    .net 科学类型相关问题
    js eval()执行传参函数的写法
    oracle里如何将两个日期的时间差返回**时**分的格式
    .NET开源项目介绍及资源推荐:数据持久层
    highCharts 电流表、电压表
    win7 telnet命令无法使用
    ascx aspx ashx asmx 文件的作用
    Oracle 新建序列值
  • 原文地址:https://www.cnblogs.com/amourjun/p/5134149.html
Copyright © 2011-2022 走看看