1332: addreviate--中级
来源:互联网 发布:windows程序设计第5版 编辑:程序博客网 时间:2024/05/29 18:36
Description
最近情报人员得到了一些经过加密的文章,每个单词都很长。破译人员想到先把单词化简一下,方法是把每个单词尽量取短些的前缀,但所取的前缀不能是其他单词的前缀。
这个任务现在就交给你来完成。
解释:“字符串s1是s2的前缀”是说把字符串s2的后面去掉某些,只保留与s1相同长度是,s2就与s1完全相同。如:“abc”是“abcaade”和“abc”的前缀,但不是“abadc”的前缀。
数据范围
单词数N,1<=n<=50; 每个单词长度不超过50;并且都是由小写字母构成。
保证所给单词中,没有一个单词是另一个单词的前缀。
这个任务现在就交给你来完成。
解释:“字符串s1是s2的前缀”是说把字符串s2的后面去掉某些,只保留与s1相同长度是,s2就与s1完全相同。如:“abc”是“abcaade”和“abc”的前缀,但不是“abadc”的前缀。
数据范围
单词数N,1<=n<=50; 每个单词长度不超过50;并且都是由小写字母构成。
保证所给单词中,没有一个单词是另一个单词的前缀。
Input
第一行一个整数N,表示单词的个数。
下面有N行,每行一个单词。
下面有N行,每行一个单词。
Output
共N行,每行一个单词,是对应上面N个单词化简后的单词。
Sample Input
样例1 样例23 3abc aacefg aadijh aae
Sample Output
样例1 样例2a aace aadi aae
*一直WA,后来才发现是自己对题目的意思理解出错了,它的目的是让我们把每个单词取尽量短些的前缀,但所取的前缀不能是其它单词的前缀。
注意是每个单词,这样举个例子就知道了。
我自己的样例:
aj
ja
jb
正确的输出应该为:
a
ja
jb
所以这里我理解错了;
我一开始以为是求满足这个条件的最大长度。
#include<stdio.h>#include<string.h>int main(){int n,i,j,k,l;char ss[51][55];while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++)scanf("%s",ss[i]);int flag=0;for(i=0;i<n;i++){l=strlen(ss[i]);for(k=1;k<=l;k++){flag=0;for(j=0;j<n;j++){if(i!=j && memcmp(ss[i],ss[j],k)==0){//注意这个函数的作用是判断两个字符串在前k个字符是否相等。 flag=1; break;}}if(flag==0) {ss[i][k]='\0'; break;}}}for(i=0;i<n;i++)printf("%s\n",ss[i]);}}
*读题还得再仔细点啊!
0 0
- 1332: addreviate--中级
- 中级
- 数据库中级
- DP中级
- JavaWeb中级
- 通讯录(中级)
- Junit中级
- Javaweb中级
- java中级
- java中级
- Android中级
- 中级笔记
- spring中级
- Java中级
- 动画中级
- linux中级教程-中级shell
- 华为oj中级 【中级】单词倒排
- 中级SQL:创建索引
- <CSS设计指南> 学习总结 -- 第一二章
- QT编译出错解决 libQtCore.so: undefined reference to `QInotifyFileSystemWatcherEngine::create()'
- python学习笔记
- <CSS设计指南> 学习总结 -- 第三章
- Python学习笔记 知识点
- 1332: addreviate--中级
- 使用DateFormat显示不同日期格式
- <CSS设计指南>学习总结 -- 第四章
- Oracle11g installation on Win2k8
- Thinkphp检测登录或操作超时(针对设置session有效期失效)
- <CSS设计指南> 学习总结 -- 页面布局
- c++_primer_exercise_1601_1604
- 风热感冒引起的咳嗽2015.02.10
- System.exit()问题