poj 3080 Blue Jeans
题目大意是:给你几个DNA序列,让你找到最长的公共子序列。这题的数据量不大,可以用暴搜,就是用到了一个字符串处理函数strstr,它是查找子串在字符串中的位子的,返回值为子串首字母的下标。记下这题留待以后参考.
代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int n,m,i,j,k,sum; char str[14][65]; char s[65],st[65]; scanf("%d",&n); while(n--) { scanf ("%d",&m); getchar(); for (i=0;i<m;i++) { scanf("%s",str[i]); //printf("%s\n",str[i]); getchar(); } int len = strlen(str[0]); int maxx=0; for(i=0;i<len;i++) { for(j=i;j<len;j++) { sum=0; for(k=i;k<=j;k++) s[sum++]=str[0][k]; s[sum]=0; for(k=1;k<m;k++) if(strstr(str[k],s)==0)break; if(k==m&&sum>maxx) { maxx=sum; strcpy(st,s); } else if(k==m&&sum==maxx) { if(strcmp(st,s)>0) strcpy(st,s); } } } if(maxx<3) printf("no significant commonalities\n"); else printf("%s\n",st); } return 0; }