zoukankan      html  css  js  c++  java
  • HDU 2072 单词数

                      单词

    Problem Description
    lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
     
    Input
    有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
     
    Output
    每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
     
    Sample Input
    you are my friend
    #
     
    Sample Output
    4
     
    代码:
    第一种方法:strtok函数和指针数组实现
     1 #include<stdio.h>
     2 #include<string.h>
     3 int main()
     4 {
     5     int i,j,t,sum,k;
     6     char *v[100];
     7     char s[1000];
     8     int b[100];
     9     while(gets(s))
    10     {
    11         memset(b,1,sizeof(b));
    12         if(s[0]=='#')
    13         break;
    14         i=0;
    15         v[i]=strtok(s," ");
    16         while(v[i])
    17         {
    18             i++;
    19             v[i]=strtok(NULL," ");
    20         }
    21         for(j=0;j<i-1;j++)
    22         for(t=j+1;t<i;t++)
    23         if(strcmp(v[j],v[t])==0)
    24         b[t]=0;
    25         for(sum=0,k=0;k<i;k++)
    26         if(b[k])
    27         sum++;
    28         printf("%d
    ",sum);
    29     }
    30     return 0;
    31 }

    第二种方法:用set实现

     1 #include<set>
     2 #include<string>
     3 #include<iostream>
     4 #include<cstdio>
     5 #include<cstring>
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     //freopen("in.txt","r",stdin);
    11     int i,j;
    12     char temp[2005];
    13     char s[2005];
    14     string sub;
    15     while(gets(s)&&strcmp(s,"#")!=0)
    16     {
    17         set<string>S;
    18         int len=strlen(s);
    19         s[len]=' ';
    20         s[++len]='';
    21         for(i=0;i<len;i++)
    22         if(s[i]!=' ')break;
    23         for(j=0;i<len;i++)
    24         {
    25             if(s[i]==' ')
    26             {
    27                 if(s[i+1]==' ')continue;
    28                 temp[j]='';
    29                 j=0;
    30                 sub=temp;
    31                 S.insert(sub);
    32                 continue;
    33             }
    34             temp[j++]=s[i];    
    35         }
    36         int ans=S.size();
    37         cout<<ans<<endl;
    38     }
    39     return 0;
    40 }
     
  • 相关阅读:
    ubuntu 16.04 更新后搜狗输入法无法输入中文的问题
    转: 苹果APNS的说明
    转:svn 更新指定文件夹
    转: Java 应用一般架构
    【原创】关于bug反正出现的问题可能
    App开发者博客之: 包建强 (专注移动app开发)
    转: 阿里跨平台移动开发工具Weex
    【原创】存储层设计的一些方法论
    转:车牌的自动截取与识别方案
    转: java web demo的示例
  • 原文地址:https://www.cnblogs.com/homura/p/4669765.html
Copyright © 2011-2022 走看看