第4章练习题--7--最短前缀--2797
来源:互联网 发布:锁机软件生成器软件 编辑:程序博客网 时间:2024/06/03 14:47
#include <iostream>
#include <stdio.h>#include <string>#include <string.h>#include <vector>#include <list>#include <math.h>#include <algorithm>using namespace std;int main(){ char dic[1001][21], subStr[21],tmp[21];int i, j, p, k;memset( dic , 0 , sizeof(char)*1001*21 );memset( subStr , 0 , sizeof(char)*21 );memset( tmp , 0 , sizeof(char)*21 );k = 0 ;while( EOF != scanf("%s",dic[k]) ) k++;for( i = 0 ; i < k ; i++ ){for( j = 1 ; j <= strlen(dic[i]) ; j++ ){strncpy( subStr , dic[i] , j );for( p = 0 ; p < k ; p++ ){if( p != i ){strncpy ( tmp , dic[p] , j );if( strcmp(tmp,subStr) == 0 ) break ;}}if( p < k )continue;if( p == k )break;}printf("%s %s\n",dic[i],subStr);memset( subStr , 0 , sizeof(char)*21 );memset( tmp , 0 , sizeof(char)*21 );} return 1; }
用暴力解决的,时间复杂度为1000*20*1000,可以考虑用前缀树(字典树)
暴力思路:
对于每个字符串,分别取其长度为 j ( 1 <= j <= strlen )的前缀,判断该前缀在其他字符串中是否出现,如果没有出现,那么就是该字符串的最短前缀;
当j 等于该字符串的长度时,可以不用与别的字符串判断,直接输出就可以了。
- 第4章练习题--7--最短前缀--2797
- poj 2797 最短前缀
- 2797:最短前缀(题解)
- poj百练2797:最短前缀
- 百练 2797:最短前缀
- 百炼 2797:最短前缀
- 最短前缀
- 06:最短前缀
- nkoj 1930 最短前缀
- 2797:最短前缀(c++ 字典树)
- NOI题库1799 最短前缀
- 最短前缀(字典树)
- 字典树 06:最短前缀
- 面试练习题-BFS 最短路径
- 第7章 图——最短路径之某个源点到其余各顶点的最短路径
- 第3章练习题4
- 【解题报告】百练2797_最短前缀(字典树)
- 最短的名字+csuoj+前缀树(字典树)
- 用汇编的眼光看C++(之退出流程)
- strlen源码剖析(转自cppblog)
- 图片点击效果
- 配置ashx读写session信息
- 用汇编的眼光看C++(之嵌入汇编)
- 第4章练习题--7--最短前缀--2797
- 用汇编的眼光看C++(之特殊函数)
- ruby中访问控制和字符串,对象引用
- 用oracle客户端的Net Manager创建服务(server)和监听(listener)
- 以dm9000驱动为例理解I/O端口
- android4源代码下载
- javaMail实现多用户发送
- pdf的合并问题
- 用汇编的眼光看C++(之class构造、析构)