标签:
hdu 单词数(2072)
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
多看几遍题目,题目要求输出一段文章中不同的单词个数,不同的单词,不同的单词!!!(重要的事情说三遍)
那么就要分成两步走:
第一步:统计一段文章中所有的单词,放到一个二维字符串里面去;
第二步:筛选出二维字符串里不同的单词个数,输出结果;(注意,方法不对很可能超时)
思路想法很简单,实现很骨感:(需要不断调试和提交,不过不要放弃)
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char a[10005],c[1000][40];
while(gets(a))
{
if(a[0]==‘#‘) break;
int i=0,j,n,m=0,k=1;
while(a[i]!=‘\0‘)
{
if(a[i]!=‘ ‘)
{
n=0;
while(a[i]!=‘ ‘&&a[i]!=‘\0‘)
{
c[m][n]=a[i]; //将文章里的单词转移到二维字符串里面去,便于比较相同的单词,统计不相同的单词数目
n++;
i++;
}
c[m][n]=‘\0‘; //字符串末尾置空
m++; //单词数量累加,记得字符串开大一点
}
if(a[i]==‘ ‘)
i++;
}
int l,sum=0;
for(int i=0;i<m;i++)
{
int blag=1;
for(l=i+1;l<m;l++)
{
if(strcmp(c[i],c[l])==0)
{
blag=0;
break; //一碰到相同的单词,开关变量标记,立即跳出,避免循环节太大,导致超时的现象
}
}
if(blag==1)
sum++; //累加每次当开关变量不变的时候的单词个数
}
cout<<sum<<endl;
}
return 0;
}
标签:
原文地址:http://blog.csdn.net/feizaosyuacm/article/details/51362541