字数

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. Impala 1、Impala理论

    1.Impala简介 • Cloudera公司推出,提供对HDFS.Hbase数据的高性能.低延迟的交互式SQL查询功能. • 基于Hive使用内存计算,兼顾数据仓库.具有实时.批处理.多并发等优点 ...

  2. |,&,<<,>>运算符

    << 位移运算符(>>相反了) /* * 题目: 2 << 3 = 10000 = 16 * 解答: 2向左移动三位,就变成了10000 * 十进制 二进制 * 2 ...

  3. IOS 添加到通讯录

    addressBookHelper.h #import <Foundation/Foundation.h> enum { ABHelperCanNotConncetToAddressBoo ...

  4. Hibernate中save、saveorupdate、persist方法的区别

    在Hibernate中,save().saveOrUpdate()和persist()都是用于将对象保存到数据库中的方法,但其中有些细微的差别.例如,save()只能INSERT记录,但是saveOr ...

  5. DICOM:C-GET与C-MOVE对照剖析

    背景: 之前专栏中介绍最多的两款PACS各自是基于dcmtk的dcmqrscp以及Orthanc.和基于fo-dicom的DicomService(自己开发的).该类应用场景都是针对于局域网,因此在使 ...

  6. Hide a file in a picture

    有时候.假设你想在电脑上隐藏关键的文件而不想让其它人看见.你会怎么做呢?找一个专业的工具?为目录设置password?更改文件属性?这些方法可行.但它们可能不太方便和安全.这里,我给大家共享一个在图片 ...

  7. FileUpload的使用案例

    文件上传 1.www.apache.org下载commons fileupload 和 commons io 2.创建jsp并附上如下代码 <%@ page language="jav ...

  8. 加载本地html遇到的问题

    之前要做一个Demo,需要用UIWebView来加载网页,前端的同事把资源包给我,里面包含html,css,JavaScript,图片等文件.我想当然的把文件夹拷到工程中,然后用以下方法加载: NSU ...

  9. [Python笔记][第二章Python序列-复杂的数据结构]

    2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...

  10. squid服务搭建

    Squid配置1. 什么是squidsquid可以做代理也可以做缓存squid缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O.  squid不仅可以做正向代理,又可以做反向代理. 正向代 ...