字数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 29470    Accepted Submission(s): 7081

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

 
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成。没有标点符号,遇到#时表示输入结束。
 
Output
每组仅仅输出一个整数,其单独成行。该整数代表一篇文章里不同单词的总数。

 
Sample Input
you are my friend
#
 
Sample Output
4
 总会有一种适合你。。。
//*************Set****************/
#include<iostream>
#include<sstream>
#include<string>
#include<set>
using namespace std;
int main()
{
string line,word;
set <string> list;
while(getline(cin,line)&&line!="#")
{
list.clear();
istringstream stream(line);
while(stream>>word)
{
if(list.end()==list.find(word))
list.insert(word);
}
cout<<list.size()<<endl;
}
return 0;
}
//************fopen文件*******************/
#include<stdio.h>
#include<string.h>
#define N 10000
char article[N],tmp[101],word[N][101];
int main()
{ int len,pos,k,cnt;
freopen("hdu_2072_in.txt","r",stdin);
freopen("hdu_2072_out.txt","w",stdout);
while(gets(article)!=NULL)
{
if(article[0]=='#') break;
cnt=0;
len=strlen(article);
pos=0;
while(pos<len)
{
sscanf(article+pos,"%s",tmp);
for(k=0;k<cnt;k++)
if( strcmp(word[k],tmp)==0) break;
if( k==cnt ) strcpy(word[cnt++],tmp);
pos += strlen(tmp) + 1; }
printf("%d/n",cnt);
}return 0;
}
//************SSSSSSScanf*******//
HDOJ——2072单词数
SSCANF使用方法:(继qsort,bsearch,strchr后发现的又一好使的函数)
sscanf与scanf相似,都是用于输入的。仅仅是后者以键盘(stdin)为输入源。前者以固定字符串为输入源。 样例:
1. 常见使用方法。 char buf[512] ;
sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中。
printf("%s\n", buf);
结果为:123456
2. 取指定长度的字符串。如在下例中。取最大长度为4字节的字符串。
sscanf("123456 ", "%4s", buf);
printf("%s\n", buf);
结果为:1234
3. 取到指定字符为止的字符串。 如在下例中,取遇到空格为止字符串。 sscanf("123456 abcdedf", "%[^ ]", buf);
printf("%s\n", buf);
结果为:123456
4. 取仅包括指定字符集的字符串。如在下例中,取仅包括1到9和小写字母的字符串。 sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
printf("%s\n", buf);
结果为:123456abcdedf
当输入:
sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
printf("%s\n",buf);
结果为:123456
5. 取到指定字符集为止的字符串。如在下例中。取遇到大写字母为止的字符串。 sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
printf("%s\n", buf);
结果为:123456abcdedf
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉。再将非'@'的一串内容送到buf中
sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
printf("%s\n", buf);
结果为:12DDWDFF
7、给定一个字符串“hello, world”,仅保留world。(注意:“,”之后有一空格)
sscanf(“hello, world”, "%*s%s", buf);
printf("%s\n", buf);
结果为:world
%*s表示第一个匹配到的%s被过滤掉。即hello被过滤了
假设没有空格则结果为NULL。
#include <stdio.h>
#include <string.h>
#include <math.h>
char word[1000];
char arr[100][100]; //arr用于存储曾经出现过的单词
int main()
{
int len, pos;
char temp[100];
while(gets(word) && strcmp(word, "#") != 0)//题目要求不是文章结尾为,注意strcmp用比較用“#”
{
len = strlen(word);//总长度(包括空格)
pos = 0;
int cnt = 0;
// pos加单词长度一直到>len
while(pos <= len)
{
sscanf(word + pos, "%s", temp); //把一个单词存入temp,空格省去(sscanf应该是读到空格截止,对于sscanf,空格非常重要)
//word + pos为指针指向位置
//printf("%s++++++++++++++++++++\n",temp);
int k;
for(k = 0; k < cnt; ++k)
if(strcmp(temp, arr[k]) == 0) //假设和曾经存入的单词同样,则不计数
break;
if(k == cnt)
strcpy(arr[cnt++], temp); //把temp存入arr,并计数器cnt加一
pos += strlen(temp) + 1;// +1表示加上空格,最后一次pos肯定会大于len
}
printf("%d\n", cnt);
}
return 0;
}

版权声明:本文博主原创文章,我们随意转载!好东西要大家一起分享嘛!

哈哈哈!。

HDoj-2072-字数的更多相关文章

  1. HDOJ.2072 单词数(map)

    单词数 点我挑战题目 点我一起学习STL-MAP 题意分析 给出一行单词,判断这行有不同种的单词多少个,用map可以轻松解决. 代码总览 /* Title:HDOJ.2072 Author:pengw ...

  2. HDOJ 2072 单词数

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

  3. C与C++中非常少犯的错误,犯了后却非常难找出的错误

    1.continue,break类的错误(HDU1877): #include<iostream> using namespace std; int main() { int a,b,m, ...

  4. hdoj:2072

    单词数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  5. ACM 删数问题 SDUT 2072

    http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2072.html 删数问题 Time Limit ...

  6. UITextView 输入字数限制

    本文介绍了UITextView对中英文还有iOS自带表情输入的字数限制,由于中文输入会有联想导致字数限制不准确所以苦恼好久,所以参考一些大神的博客终于搞定,欢迎大家参考和指正. 对于限制UITextV ...

  7. WORD中字数和字符

    在WORD中,一个汉字算1个字符,也算是1个字,一个标点符号也算1个字符,也算是1个字,WORD中字符数的统计分为(不计空格)和(计空格)的两种. 如果一篇文章仅由汉字和标点符号组成,那么字数=字符数 ...

  8. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

随机推荐

  1. Libgdx开发ios游戏

    今天亲自尝试了LibGDX如何开发ios游戏, 必须条件: 1:mac操作系统,mac下必须安装Xcode     好像ios开发必须在mac操作系统下 2:mac下安装eclipse 3:eclip ...

  2. 【转】V4L2+swscale+X264+live555实现流媒体服务端

    写这边博客,一方面是因为自己在做项目的时候不太做笔记,怕以后自己忘记了.另一方面,是让正在寻求资料的同行少走一点弯路吧.不能说我这个方案怎么的好,至少是有一点参考价值的.这边博客需要一定基础才能看明白 ...

  3. 小明系列问题——小明序列(Lis 相距大于d的单调上升子序列)

    小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  4. 【剑指Offer学习】【面试题60:把二叉树打印出多行】

    题目:从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印一行. 解题思路 用一个队列来保存将要打印的结点.为了把二叉树的每一行单独打印到一行里,我们须要两个变量:一个变量表示在当前的 ...

  5. Spting使用memcached

    applicationContext.xml配置文件: <?xml version="1.0" encoding="UTF-8"?> <bea ...

  6. [AC自动机][HDU3065]

    //====================== // HDU 2222 // 求目标串中出现了几个模式串 //输入 //1 //5 //she //he //say //shr //her //ya ...

  7. 【二分查找+优化O(n)】【续UVA1121】Subsequence

    之前的二分答案做法 http://blog.csdn.net/zy691357966/article/details/40212215 二分查找做法: 我们首先试试只枚举终点.对于终点j,我们的目标是 ...

  8. NET基础课--NET中程序集0-1

    程序集 1.表现形式:.dll  和. exe . 2.程序集组成:PE头,CLR头,清单,元数据,CIL代码,资源文件.实际上这些内容包含在一个叫做Module的逻辑结构中. 单模块程序集:程序集就 ...

  9. linq读书笔记2-查询内存中的对象

    上次我们说到了linq对数组内容的检索,自.net2.0以后,泛型成了很常见的一种应用技术,linq对泛型的检索也提供了完善的支持 如对list类型的支持,范例如下: class Program    ...

  10. 自定义的GitLab 头像无法正常显示以及URL总是指向localhost

    解决指向localhost的问题: 编辑gitlab的配置vi /etc/gitlab/gitlab.rb,修改external_url 参数值 [Mesogene@localhost ~]$ sud ...