3R - 单词数
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4 // 不是统计没有重复的单词的总数
#include<stdio.h>
#include<string.h>
int main()
{
char text[], word[], *p, *q;
int c, len, j,k, flag;
while(gets(text), text[]!='#')
{
len=strlen(text);
for(int i=;i<len;i++)
if(text[i]==' ')
text[i]='\0';
c=;
for(p=text;p<len+text;p+=k+)
{
k=strlen(p); strcpy(word,p); flag=;
for(q=p+k+;q<len+text;q+=j+)
{
j=strlen(q);
if(strcmp(word,q)==)
{ flag=; break; }
}
if(flag) c++;
}
printf("%d\n", c);
}
return ;
}
WA
// 在文章中选定一个单词,在其后遍历. 若遇到相同的单词就删除
#include<stdio.h>
#include<string.h> void del_word_from_sentence(char *p, int len)
{
int l=strlen(p);
for(int i=;i<len-l;i++)
p[i]=p[l++i];
} int main()
{
char text[], word[], *p, *q;
int c, len, j,k, flag;
while(gets(text), text[]!='#')
{
len=strlen(text);
for(int i=;i<len;i++)
if(text[i]==' ')
text[i]='\0';
c=;
for(p=text;p<len+text;p+=k+)
{
k=strlen(p); strcpy(word,p); flag=; c++;
for(q=p+k+;q<len+text;q+=j+)
{
j=strlen(q);
if(strcmp(word,q)==)
{ flag++; del_word_from_sentence(q,text+len-q); }
}
if(flag) len-=flag*(k+);
}
printf("%d\n", c);
}
return ;
}
WA*2
// 每删掉一个单词就马上修改文章长度. 还是WA。。。
#include<stdio.h>
#include<string.h> void del_word_from_sentence(char *p, int len)
{
int l=strlen(p);
for(int i=;i<len-l;i++)
p[i]=p[l++i];
} int main()
{
char text[], word[], *p, *q;
int c, len, j,k, flag;
while(gets(text), text[]!='#')
{
len=strlen(text);
for(int i=;i<len;i++)
if(text[i]==' ')
text[i]='\0';
c=;
for(p=text;p<len+text;p+=k+)
{
k=strlen(p); strcpy(word,p); c++;
for(q=p+k+;q<len+text;q+=j+)
{
j=strlen(q); flag=;
if(strcmp(word,q)==)
{ flag=; del_word_from_sentence(q,text+len-q); }
if(flag) len-=k+;
} }
printf("%d\n", c);
}
return ;
}
WA*3
// 很大的数组不应该作为局部变量(有些OJ会限制局部数组的大小),做成全局变量不容易错
// 没有考虑连续空格的情况如:aa(空格)(空格)bbb
// 其他注意项见代码
#include<stdio.h>
#include<string.h>
char text[], word[], *p, *q; void del_word_from_sentence(char *p, int len)
{
int l=strlen(p);
for(int i=;i<len-l;i++)
p[i]=p[l++i];
} int main()
{
int c, len, j,k, flag;
while(gets(text), text[]!='#')
{
len=strlen(text);
for(int i=;i<len;i++)
if(text[i]==' ')
text[i]='\0';
c=;
for(p=text;p<len+text;p+=k+)
{
k=strlen(p);
if(k==) continue;
strcpy(word,p); c++;
for(q=p+k+;q<len+text;q+=j+)
{
j=strlen(q);
if(j==) continue;
flag=;
if(strcmp(word,q)==)
{ flag=; del_word_from_sentence(q,text+len-q); }
if(flag)
{ len-=k+; j=-; } // 删除一个单词后q应不变,为凑q+=0,令j=-1.
}
}
printf("%d\n", c);
}
return ;
}
AC*2
// 详见代码
#include<iostream> // cin->stdin, cout->stdout, endl->os.put('\n')&os.flush()
#include<string> // string, getline()->gets()
#include<set> // set
#include<sstream> // istringstream
using namespace std;
int main()
{
string text, w;
while(getline(cin,text), text!="#")
{
set<string> word;
istringstream stream(text);
while(stream>>w) // Extends the container by inserting new elements,
word.insert(w); // effectively increasing the container size by the number of elements inserted.
cout<<word.size()<<endl; // Returns the number of elements in the set container.
}
return ;
}
AC
3R - 单词数的更多相关文章
- 统计单词数(WordCount)
1.首先新建两个文件夹: 往文件夹添加内容: 2.启动hadoop-查看是否启动成功. 3.先对nameNode进行初始化. 4.查看hadoop下面有哪些文件. 5.在hadoop目录下创建inpu ...
- HDU 2072 单词数
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2072 普通解法: /* HDU 2072 单词数 --- 字符串处理 */ #include < ...
- zzuli oj 1178 单词数
Description 统计一篇文章里不同单词的总数. Input 有多组数据,每组一行,每组就是一篇小文章.每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束. Output 每 ...
- 翻译器DIY它———算在英文文本中的单词数,字符和行数
咳咳.这部分应该是序列化编译器DIY的,然而,在这样做DIY第一次使用前flex 为了练练手,对于后者的理解是有帮助. 在word 我经常看到一个字计数功能,因此,它是如何实现,当然,首先想到的是要经 ...
- 使用jdk8 stream 统计单词数
在我的SpringBoot2.0不容错过的新特性 WebFlux响应式编程里面,有同学问如何使用stream统计单词数.这是个好例子,也很典型,在这里补上. 下面的例子实现了从一个文本文件读取(英文) ...
- (set stringstream)单词数 hdu2072
单词数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 作业:WordCount--实现字符数,单词数,行数的统计
1. Gitee 地址 https://gitee.com/fyxiaobai/wordcount 2. PSP表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning ...
- WordCount C语言实现求文本的字符数,单词数,行数
1.码云地址: https://gitee.com/miaomiaobobo/WordCount 2.psp表格 PSP2.1表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) P ...
- 题解报告:hdu 2072 单词数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题目: Problem Description lily的好朋友xiaoou333最近很空,他想 ...
随机推荐
- django 神奇的双下划线,通过外键的三种查询方式
一,用于跨表操作 只要是object后面字符串都是用双下划线__.其它地方用点. 如:的values中的group_code__name.group_code是一个外键 def list(reques ...
- Maya中输出alembic文件的方法
Maya中输出alembic文件是有现成api调用的,与maya中大部分api一样,这个功能参数的传入是非常类似mel的,本质上讲都是kwargs类型的参数,所以我们传入的参数就需要整理成类似于mel ...
- UEFI和GPT下硬盘克隆后的BCD引导修复
UEFI和GPT下硬盘克隆后的BCD引导修复-Storm_Center http://www.stormcn.cn/post/1901.html 当硬盘引导换成GPT,系统启动也变成UEFI后,如果直 ...
- 使用 tag 文件定义自定义标签
----------------------------------------------------------------------- 在jsp文件中,可以引用tag和tld文件. 1.对于t ...
- composer在phpstorm中安装代码库
E:\php\PHPTutorial\WWW\kmmhtt>composer install composer 安装地址 :https://getcomposer.org/download/
- vue路由的钩子函数和跳转
首页可以控制导航跳转,beforeEach,afterEach等,一般用于页面title的修改.一些需要登录才能调整页面的重定向功能. beforeEach主要有3个参数to,from,next. t ...
- 某大型跨境电商JVM调优总结
前提:某大型跨境电商业务发展非常快,线上机器扩容也很频繁,但是对于线上机器的运行情况,特别是jvm内存的情况,一直没有一个统一的标准来给到各个应用服务的owner.经过618大促之后,和运维的同学讨论 ...
- ios7自定义返回按钮后,右滑返回功能失效解决方法
-(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //开启ios右滑返回 if ([ ...
- linux 僵尸进程查看方式
ps -A -ostat,ppid,pid,cmd |grep -e '^[Zz]' # 结果 Z 169925 49893 [sw] <defunct> Z 169925 120690 ...
- CPU与内存互联的架构演变
随着计算机中CPU核数目的增加,传统的UMA(unifonn memory access)架构由于对关键硬件(如中央内存控制器)的竞争加剧出现了性能上的瓶颈,即扩展性不强.而NUMA架构则以其良好的可 ...