hdu 2072

这题吃了几个WA  检查了多次计数出了点问题  我的思路就是将一个个单词进二维数组  最后删掉重复的单词 

单词数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 34801    Accepted Submission(s): 8324


Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
 

Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
 

Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
 

Sample Input
you are my friend #
 

Sample Output
4
 

#include<stdio.h>
#include "string.h"
char map[100][100];
char ex[100];
int i,j,sum;
int main(void)
{
    while(1)
    {
        gets(ex);
        if(ex[0]=='#') break;
        i=j=sum=0;
        
        while(ex[i]==' ') i++;
        while(ex[i])
        {
            int tmp=0;
            while(ex[i]!=' '&&ex[i]!=0) {map[j][tmp++]=ex[i]; i++;}
            while(ex[i]==' ') i++;
            map[j][tmp]=0;
            j++;
        }
        /* 这是之前WA的计数代码  碰到最后一个单词后面有空格会多统计一次单词数
        while(ex[i])
        {
            int tmp=0;
            while(ex[i]==' ') i++;
            while(ex[i]!=' '&&ex[i]!=0) {map[j][tmp++]=ex[i]; i++;}
            map[j][tmp]=0;
            j++;
        }*/
        for(int m=0;m<j;m++)
        {
            for(int n=m+1;n<j;n++)
                if(strcmp(map[m],map[n])==0&&map[n][0]!=1) {
                    map[n][0]=1;
                }
        }
        for(int i=0;i<j;i++)
        {
            if(map[i][0]!=1) sum++;
        }
        printf("%d\n",sum);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值