杭电 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="";

        }

    }

}

 

你可能感兴趣的:(杭电)