单词数 2072

来源:互联网 发布:html class属性 数据库 编辑:程序博客网 时间:2024/06/05 18:58

单词数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 30722    Accepted Submission(s): 7320


Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
 

Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
 

Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
 

Sample Input
you are my friend#
 

Sample Output
4
 

字符数组大小设为100000就不行了。出现


不知道栈的内存有多大????


strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int main(){    char str[10000],a[1000][1000];    while(gets(str)){        int i = 0,count=0;        if(strcmp(str,"#") == 0)break;        int len = strlen(str);        char *p;        p = strtok(str," ");        for( ; p != NULL ; i++){            strcpy(a[i], p);            p = strtok( NULL ," ");        }        for(int m = 0; m < i ;m++){            for(int n = m+1; n < i; n++ ){                if(strcmp(a[m] , a[n])==0 ){                   count++;                    break;                }                    }            }        printf("%d\n",i-count);    }    return 0;}

0 0
原创粉丝点击