ust_1503 zz买衣服

来源:互联网 发布:福建网络干部学院 编辑:程序博客网 时间:2024/04/25 08:31

原题链接:http://www.acmore.net/problem.php?id=1503

分析:不会做···怎么想都不会做。好像会,又不会。然后是第一次接触map.

代码:

#include<stdio.h>
#include<string>
#include<map>    //map关联容器。
using namespace std;
map<string,int> mymap;   //string是key,int是价值。
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)==2)
    {
        mymap.clear();
        int i;
        char s[20];
        for(i=0;i<n;i++)
        {
            scanf("%s",s);
            mymap[s]=1;   //插入key,这有1,0两种状态,1表示mymap容器中有字符串s。可以想象成数组,s是数组下标。
        }
        for(i=0;i<m;i++)
        {
            scanf("%s",s);
            if(mymap[s]!=1)   //若s不存在容器中则输出NO,然后将s存入容器。
            {
                printf("YES\n");
                mymap[s]=1;
            }
            else
            {
                printf("NO\n");

            }
        }
    }
    return 0;
}

总结:虽然没有领悟map的精髓,不过好像懂点了。

 

再来一个用set集合AC的代码。

#include<cstdio>
#include<algorithm>
#include<string>
#include<set>
using namespace std;
set<string> st;  //定义一个元素为string的集合
int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        st.clear();
        char s[20];
        for(int i=0;i<n;i++)
        {
            scanf("%s",s);
            st.insert(s);      //放入集合中
        }
        for(int i=0;i<m;i++)
        {
            scanf("%s",s);
            if(st.count(s))    //查看s是否在st集合中。
            {
                printf("NO\n");    //在集合中输出NO;
            }
            else
            {
                printf("YES\n");  
                st.insert(s);
            }
        }

    }


    return 0;
}

 

总结:又是c++的STL,表示对这些真的不熟←_←.set集合也有很多要学的。

 

原创粉丝点击