码迷,mamicode.com
首页 > 其他好文 > 详细

单词数(题目很容易读错)

时间:2016-05-12 17:37:21      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!