OpenJudge2744

来源:互联网 发布:logo自制软件 编辑:程序博客网 时间:2024/05/17 06:05
这个, 题目看不懂, 看了一下下课本, 哎。

编完后, GCC++ 4.4 不能编译strstr函数。

也不知道是不是所有平台上的GCC++ 4.4都不能编译。

自己编了一个逆序的函数。

 

 

#include <iostream>#include <fstream>#include <string>#include <cstring>using namespace std; char str[100][101];int n;void rev(char c[]){int len=strlen(c);int i, j;for(i=0, j=len-1; i<j; i++, j--){c[len] = c[i];c[i] = c[j];c[j] = c[len];}c[len]='\0';}int search(char c[]){char substr[101], revsub[101]; int i, j, len, k, flat, maxlen=0;len = strlen(c);for(i=0; i<len; i++){for(j=len; j>i; j--){strncpy(substr, c+i, j-i); strncpy(revsub, c+i, j-i); substr[j-i] = revsub[j-i] = '\0';rev(revsub); flat=1;for(k=0; k<n; k++){if(strstr(str[k], substr)==NULL && strstr(str[k], revsub)==NULL){flat=0;break;}}if(flat==1 && maxlen<strlen(substr)){maxlen = strlen(substr);}}}return maxlen;}int main(){//ifstream in("OpenJudgeText.txt"); int t, i, maxsub, minlen;char tmp[101];cin>>t;while(t--){cin>>n;cin>>str[0];strcpy(tmp,str[0]); minlen = strlen(tmp); for(i=1; i<n; i++){cin>>str[i];if(strlen(str[i]) < minlen){strcpy(tmp,str[i]);minlen = strlen(tmp);}}maxsub = search(tmp);printf("%d\n", maxsub);}return 0; }