hdu1238 字符串应用
来源:互联网 发布:淘宝怎样设置经营范围 编辑:程序博客网 时间:2024/05/29 11:38
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1238
首先将给定的字符串按照长度进行排列;
枚举最短的字符串;
对枚举的每个字符串在其它字符串中进行查找,查看是否是其它字符串的子串;
统计符合条件的字符串的长度,选取最大的长度.
PS:不仅要比较子串,还要比较子串的反串.
#include <stdio.h>#include <string.h>#include <stdlib.h>char str[101][101],tmp[101],rtmp[101];int n,t;int cmp(const void *a,const void *b){return strlen((char*)a) - strlen((char*)b);}//枚举字符串void copy(char *st,int left,int right){int i = 0,h,k;while(left<=right){tmp[i] = st[left];i++,left++;}tmp[i]='\0';k = 0;for(h=i-1;h>=0;h--){rtmp[k]=tmp[h];k++;}rtmp[k]='\0';}int main(){int i,k,h;int max,flag;while(~scanf("%d",&n)){while(n--){scanf("%d\n",&t);for(i=0;i<t;i++)scanf("%s",str[i]);qsort(str,t,sizeof(str[0]),cmp);max=0;for(i=0;i<(int)strlen(str[0]);i++){for(k=i;k<(int)strlen(str[0]);k++){copy(str[0],i,k);flag = 1;for(h=1;h<t;h++){if(strstr(str[h],tmp) == NULL&&NULL == strstr(str[h],rtmp)){flag=0;break;}}if(flag)max=max>(int)strlen(tmp)?max:(int)strlen(tmp);}}printf("%d\n",max);}}return 0;}
- hdu1238 字符串应用
- Substrings(hdu1238)字符串匹配
- HDU1238
- hdu1238
- hdu1238
- HDU1238
- ACM-字符串处理之Substrings——hdu1238
- HDU1238 Substrings
- hdu1238 Substrings
- HDU1238:Substrings
- HDU1238 Substrings
- hdu1238---Substrings
- hdu1238 Substrings
- HDU1238-Substrings
- 最长公共子串(1)--hdu1238(多个字符串得最长公共子串--暴力)
- HDU1238 有详细注释
- HDU1238(模拟+枚举)
- hdu1238 Substrings (暴力)
- EditPuls保存时不生成.bak文件
- 使用Xmanager在CentOs5.5 安装oracle11g r2
- linux下的java环境变量配置
- linux下oracle中文乱码解决之道(亲测,可用)
- Windows 7/Vista 安装软件时出现Error 1935总结及解决方法
- hdu1238 字符串应用
- JDK里的设计模式
- ArcGis中投影的方法以及计算面积的方法
- java中i=i++问题分析
- Google Caffeine: What it really is
- SNMP 协议对应的RFC文件
- IE6 动态创建 iframe 无法显示的 bug,万恶的IE6
- Mac OS X的Stack功能
- 正则表达式