杭电 HOJ 2072 单词数 解题报告

    无奈的Wrong了N次,请教师兄后才搞定这题。。。注意消空格,用STL里的set做的,代码如下:

#include <iostream>
#include <set>
#include <string>
using namespace std;

int main()
{
    set<string> st;
    char str[1000];
    char s[100];
    int len,slen;
    while (cin.getline(str,sizeof(str)) && str[0]!='#')
    {
        st.clear();
        len=0;
        slen=strlen(str);
        while(str[len++]==' ');
        len--;
        while(len<slen)
        {
            sscanf(str+len,"%s",s);
            len+=strlen(s);
            while(str[++len]==' ');
            if(s[0]!='\0')
                st.insert(s);
        }
        cout<<st.size()<<endl;
    }
}

    网上另外找了一份代码,也贴进来:

#pragma warning(disable:4786)
#include<iostream>
#include<set>
#include<string>
using namespace std;
int main()
{
    set<string>word;
    char c;
    string s="";
    while((c=cin.get())!='#')
    {
        while(c!=' '&&c!='\n')
        {
            s+=c;
            c=cin.get();
        }
        if(s.length())
        {
            word.insert(s);
            s="";
        }
        if(c=='\n')
        {
            printf("%d\n",word.size());
            word.clear();
            s="";
        }
    }
}

 

posted @ 2013-02-27 00:23  SF-_-  阅读(835)  评论(0编辑  收藏  举报