破译情报-NOIP2016提高组复赛模拟试题
【题目描述】
最近国安人员截获了一份 RB 国的秘密情报, 全文都是经过加密的,每个单 词都很长。破译人员想到先把单词化简一下,方法是把每个单词尽量取短些的前 缀,但所取的前缀不能是其他单词的前缀。 这个任务现在就交给你来完成。
解释:“字符串s1是s2的前缀”意思是把字符串s2的后面去掉某些字符,只保留与s1相同长度的子串,则s1就称为s2的前缀。如:“abc”是“abcaade”和“abc”的 前缀,但不是“abadc”的前缀。
数据范围 单词数 N, 1<=n<=50; 每个单词长度不超过 50;并且都是由小写字母构成。 保证所给单词没有一个单词是另一个单词的前缀。
【输入文件 addreviate.in】
第一行一个整数 N,表示单词的个数。 下面有 N 行,每行一个单词。
【输出文件 addreviate.out】
共 N 行,每行一个单词,是对应上面 N 个单词化简后的单词。
【样例输入】
样例测试点#1:
3
abc
efg
ijh
样例测试点#2:
3
aac
aad
aae
【样例输出】
样例测试点#1:
a
e
i
样例测试点#2:
aac
aad
aae
思路:这题算是送分题中的高难度题了,对于各位高手来说不是什么问题,我说这题是为了提一下一个库函数,这个库函数是我们一般不经常用的,废话不多说,我先从头讲起吧
这题要求我们保留n个字符串的前缀,使得这些前缀和其他前缀不相同,缩小存储空间,看起来很简单,其实还是有点复杂滴
例如题目中给的样例:
可以先把第一个字符按照图中红线分段,提取第一行第一个字符,来和下面的每一个字符串进行对比
,如果这个段并不在下面任何一个字符串中是前缀,就可以在后面加上个'\0'表示截取这一段
之后对每一行都采取这样的措施,就可以实现保留前缀
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
//freopen("addreviate.in","r",stdin);
//freopen("addreviate.out","w",stdout);
char a[][],temp;
int n;
int i,j,k;
int flag,len;
scanf("%d",&n);
for(i=;i<n;i++)
{
scanf("%s",a[i]);
}
for(i=;i<n;i++)
{
len=strlen(a[i]);//测一下a[i]的长度
for(k=;k<len;k++)//扫描整个子串
{
temp=a[i][k];//记录一下当前字符
a[i][k]='\0';//当前标记为空
for(j=;j<n;j++)
{
if(i!=j&&(strstr(a[j],a[i])-a[j])==)//如果不是同一行,并且这个子串与这个字符串的前面一部分吻合,就可以停止了
{
break;//停止!!
}
}
if(j>=n)//这个空的位置前面一段保证前缀不重复,就可以标记为空了
{
a[i][k]='\0';
break;
}
else//否则还要还原回去,继续寻找下一位
{
a[i][k]=temp;
}
}
}
for(i=;i<n;i++)
{
printf("%s\n",a[i]);
}
return ;
}
破译情报-NOIP2016提高组复赛模拟试题的更多相关文章
- 冲刺NOIP2015提高组复赛模拟试题(五)2.道路修建
2.道路修建 描述 Description liouzhou_101最悲痛的回忆就是NOI2011的道路修建,当时开了系统堆栈,结果无限RE… 出于某种报复心理,就把那题神奇了一下: 在 Z星球上有N ...
- CCF-NOIP-2018 提高组(复赛) 模拟试题(四)
T1 贪吃蛇 [问题描述] 贪吃蛇是一个好玩的游戏.在本题中,你需要对这个游戏进行模拟. 这个游戏在一个 \(n\) 行 \(m\) 列的二维棋盘上进行. 我们用 \((x, y)\) 来表示第 \( ...
- CCF-NOIP-2018 提高组(复赛) 模拟试题(九)(2018 CSYZ长沙一中)
T1 Circle [问题描述] 小 w 的男朋友送给小 w 一个 n 个点 m 条边的图,并且刁难小 w 要她找出点数最少的正环. 小 w 不会做,于是向你求助. [输入格式] 第一行两个整数\(n ...
- CCF-NOIP-2018 提高组(复赛) 模拟试题(七)
T1 Adjoin [问题描述] 定义一种合法的\(0-1\)串:串中任何一个数字都与\(1\)相邻.例如长度为$ 3 的 0-1 $串中,\(101\)是非法的,因为两边的\(1\)没有相邻的\(1 ...
- CCF-NOIP-2018 提高组(复赛) 模拟试题(一)
T1 帽子戏法 问题描述 小 Y 有一个\(n*n*n\)的"帽子立方体" ,即一个\(n\)层的立方体,每层的帽子都 可以排成\(n*n\)的矩阵. "帽子立方体&qu ...
- 冲刺NOIP2015提高组复赛模拟试题(五) 3.破坏基地
3.破坏基地 描述 Description 在Z国和W国之间一直战火不断. 好不容易,W国的间谍把完整的Z国的军事基地的地图到手了. 于是W国决定再次出击,一举击破Z国的防线. W国认真研究了Z国的地 ...
- 冲刺NOIP2015提高组复赛模拟试题(五)1.数学作业
1. 数学作业 [问题描述] 路人丙的数学老师非常乏力,他喜欢出一些非常乏力的数学题来为难乏力的学生们.这次数学老师布置了一堆的数学题作为作业,而且这些数学题有个共同的特点是都求C(N,M)中不同质因 ...
- CCF-NOIP-2018 提高组(复赛) 模拟试题(五)
T1 相遇 [问题描述] 在一场奇怪的梦里,小 Y 来到了一个神奇的国度.这个国度可以用一根数轴表示,小 Y 在 N 处,而小 Y 想吃的美食在 K 处.小 Y 有两种方式移动, 一种叫做步行, 一种 ...
- CCF-NOIP-2018 提高组(复赛) 模拟试题(三)
T1 取球游戏 问题描述 现有\(N\)个小球,依次编号为\(1\)到\(N\),这些小球除了编号以外没有任何区别.从这\(N\)个小球中取出\(M\)个,请问有多少种取球方案使得在取出的\(M\)个 ...
随机推荐
- 解决Github使用Fastly CDN而导致不能加载网页的方法
Github现在基本属于“安全”网站,但 Github使用fastly.net的CDN服务后,其网站在国内经常不能正常加载网页.github.global.ssl.fastly.net的亚洲IP一般为 ...
- Jquery CSS 与 Attr
今天用Jquery想动态更改一张位图的src发现css不好用,查看Jquery文档好像是css是设置样式的属性的,如颜色,字体,背景等,而attr貌似是能操作所有属性,包括Jquery未封装的属性. ...
- JavaScript修改Canvas图片
用JavaScript修改Canvas图片的分辨率(DPI) 应用场景: 仓库每次发货需要打印标签, Canvas根据从数据库读取的产品信息可以生成标签JPG, 但是这个JPG图片的默认分辨率(D ...
- .NET核心代码保护策略
.NET核心代码保护策略-隐藏核心程序集 经过之前那个道德指责风波过后也有一段时间没写博客了,当然不是我心怀内疚才这么久不写,纯粹是程序员的通病..怎一个懒字了得,本来想写一些长篇大论反讽一下那些道德 ...
- IOS学习之路(二十五)UIView动画,弹出后移动然后消失
首先在viewdidload中添加UIlable并且把其设为隐藏 然后在点击按钮后,让其弹出移动后消失 //点击按钮后: #pragma mark 点击关注按钮 - (IBAction)guanzhu ...
- C# 代理应用 - Cachable
C# 代理应用 - Cachable 放心,这次不是说设计模式中的代理模式,说的是C#的RealProxy的用法,主要用于:通过给class贴标签,让class做更多的工作,比如判断是否存在缓存,有则 ...
- 当Erlang遇到Solr
当Erlang遇到Solr Joe Armstrong的访谈中有一段关于"打开黑盒子"的阐述,给我留下很深的印象:Joe Armstrong在做XWindows开发时没有使用对 ...
- 构建一个真实的应用电子商务SportsStore(十一)
构建一个真实的应用电子商务SportsStore(十一) 我们的项目已经进入了非常好的良性循环,项目中涵盖了多数现在的主流开源框架的使用.就Ninject而言,我们的运用是非常的成功,没有任何一点多余 ...
- Static 单例模式
Static 方法的问题 今天在看EhCache源码的时候,发现有一个这样的方法 这个是个典型的单例模式的工具类,但我所知道的单例模式的写法不是这样的,虽然<effect java>中 ...
- SPFILE 、PFILE 的全面解读
这里先阐述一下数据库的启动过程: 1. 启动实例/例程(nomount状态)时,读取参数文件(文本文件PFILE 或服务器参数文件SPFILE),分配SGA.启动后台进程.打开告警文件及后台 ...