hdoj 2072 单词数
2015-01-22 10:21
211 查看
单词数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 32344 Accepted Submission(s): 7625
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend #
Sample Output
4
很坑的题,要考虑全是空格和直接回车的情况。
#include<stdio.h> #include<string.h> int main() { int i,j,l,n; int word;//总单词数 int sameword;//重复的单词数 char str1[1010],str2[110][1010]; while(gets(str1)&&(str1[0]!='#')) { l=strlen(str1); memset(str2,'\0',sizeof(str2)); if(l==0)//直接回车的情况 { printf("0\n"); continue; } n=l-1; for(i=0;i<l;i++) { if(str1[i]!=' ') { n=i; break; } } if(n==l-1)//全是空格的情况 { printf("0\n"); continue; } j=0;word=1; for(i=n;i<l-1;i++) { if(str1[i]!=' ') { str2[word][j++]=str1[i]; } if(str1[i]==' '&&str1[i+1]!=' ')//新增单词 { word++;j=0; } } if(str1[l-1]!=' ') { str2[word][j]=str1[l-1]; } sameword=0; for(i=1;i<=word;i++) { for(j=i+1;j<=word;j++) { if(strcmp(str2[i],str2[j])==0) { sameword++; break; } } } printf("%d\n",word-sameword); } return 0; }
更新时间 2015.6.1 一遍过了
#include <cstdio> #include <cstring> #define MAX 10000+10 using namespace std; char str[MAX][100]; char word[MAX]; void find(char *s) { int i, j, l = strlen(s); int vis[MAX]; if(l == 0)//空格 { printf("0\n"); return ; } for(i = 0; i < l; i++)//去掉前面空格 if(s[i] != ' ') break; int num = 0; int t = 0; memset(str, '\0', sizeof(str)); for(; i < l-1; i++) { if(s[i] != ' ') str[num][t++] = s[i]; if(s[i] != ' ' && s[i+1] == ' ') { num++; t = 0; } } if(s[l-1] != ' ') str[num++][t++] = s[l-1]; int sum = num; memset(vis, 0, sizeof(vis)); for(i = 0; i < num; i++) { if(vis[i]) continue; for(j = 0; j < num; j++) { if(i == j) continue; if(vis[j]) continue; if(strcmp(str[i], str[j]) == 0) { sum--; vis[j] = 1; } } } printf("%d\n", sum); } int main() { while(gets(word), word[0] != '#') { find(word); } return 0; }
相关文章推荐
- HDoj-2072-单词数
- hdoj2072 单词数 (set 和 map 两种做法)
- Hdoj 2072 单词数
- hdoj-2072-单词数(结构体、大坑)
- HDOJ 2072 单词数 (set)
- hdoj 2072 单词数
- HDOJ2072单词数
- HDOJ 2072 单词数(trie树入门)
- HDOJ2072单词数
- ACM--HDOJ 2072--单词数--字符串--水
- hdoj 2072 单词数 【字符串处理】
- HDOJ 2072 单词数
- HDOJ 2072 单词数(字符串,map)
- hdoj.2072 单词数 20140722
- HDOJ2072 单词数
- HDOJ 2072 单词数
- HDOJ 2072 单词数
- hdoj 2072 单词数 (map)
- HDOJ-2072单词数(Trie树/MAP)
- HDOJ 2072 单词数