首页 > 学院 > 开发设计 > 正文

poj 3080 Blue Jeans

2019-11-11 05:13:12
字体:
来源:转载
供稿:网友

纠结了好久的题目,没想到暴力可过,直接枚举第一个串的所有子串,然后在后边的串里直接搜索就行,如果有多个答案,输出最小字典序的,子串的长度至少要大于2

#include <cstdio>#include <cstring>char str[15][65];char subStr[65];char resStr[65];int n,maxlen;void Search(){ int len = strlen(subStr); int cnt = 1; for(int i = 1; i < n; ++i) if(strstr(str[i],subStr)) ++cnt; if(cnt == n && len > maxlen) { maxlen = len; strcpy(resStr,subStr); } if(cnt == n && len == maxlen) { if(strcmp(subStr,resStr) < 0) strcpy(resStr,subStr); }}int main(){ int t,len = 60; scanf("%d",&t); while(t--) { maxlen = 0; scanf("%d",&n); for(int i = 0; i < n; ++i) scanf(" %s",str[i]); //截取所有的子串并对每个子串搜索 for(int i = 0; i < len; ++i) { for(int j = i+1; j < len; ++j) { strncpy(subStr,str[0]+i,j-i+1); subStr[j-i+1] = '/0'; Search(); } } if(maxlen > 2) puts(resStr); else PRintf("no significant commonalities/n"); } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表