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 }
     
  • 相关阅读:
    带轮播图、导航栏、商品的简单html,以及轮播图下边数字随轮播图的改变而改变
    设计table表格,用js设计偶数行和奇数行显示不同的颜色
    用js实现九九乘法口诀两种方式
    [FW]修复ubutnu12.04+win7的grub2引导
    How to compile Linux kernel in fedora 6
    [Fw]初探linux中断系统(2)
    [Fw]初探linux中断系统(1)
    Regular Expression 範例
    [fw]IDT表的初始化
    [Fw]中断的初始化
  • 原文地址:https://www.cnblogs.com/homura/p/4669765.html
Copyright © 2011-2022 走看看