您的位置:首页 > 其它

单词数

2013-12-29 13:14 246 查看
题目链接(hdoj 2072):http://acm.hdu.edu.cn/showproblem.php?pid=2072

单词数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 24204    Accepted Submission(s): 5741

Problem Description

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

 

Input

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

 

Output

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

 

Sample Input

you are my friend

#

 

Sample Output

4

虽然是水题一道,但是不知道怎么的一直wa,尽管试了很多数据都是正确的。后来换了个思路来数单词终于过了。。。

AC代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp(const void *a, const void *b)
{
return strcmp((char *)a, (char *)b);
}
main()
{
char words[2000][1000], str[20000];
while(gets(str) && strcmp(str, "#"))
{
int count = 0, k = 0, sig = 0;
for(int i = 0; str[i]; i++)
{
if(str[i] == ' ')
sig++;
}
if(sig == strlen(str))
{
puts("0");
continue;
}
for(int i = 0; str[i]; i++)
{
if(str[i] != ' ')
words[count][k++] = str[i];
else
{
words[count][k] = '\0';
if(k != 0)
count++;
k = 0;
}
}
if(k != 0)
words[count++][k] = '\0';
qsort(words, count, sizeof(char) * 1000, cmp);
int result = 1;//wa:int result = 0
for(int i = 0; i < count - 1; i++)//wa:i < count这里可能越位了,也可能测试数据最多单词数是2000?哇嘎拉纳伊。。。哇嘎拉纳伊。。。
if(strcmp(words[i], words[i + 1]))
result++;
printf("%d\n", result);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: