c语言查找字符串并报道其在字符串中的位置
来源:百度知道 编辑:UC知道 时间:2024/06/15 21:50:28
小弟有个问题想向你们请教,能否帮忙解决一下?
是这样的有一个有ATGC组成的DNA序列:AAATAAATAAATAAATTTGCGATATATATATCGCGCGTAGGTAGGTAGGTAGGCGATTTCGATTTCGATTTCGATTTCGATTT
我们能很容易的看到序列内部有许多重复序列,AAATAAATAAAT,AAA,TTT,ATATATAT,CGCGCG,TAGGTAGGTAGGTAGG,CGATTTCGATTTCGATTTCGATTTCGATTT
我要问的问题是:如何在一个任意的DNA序列内部识别这些重复,并且以最大匹配的方式识别这些重复,例如重复AAATAAATAAAT, 而并不被看成是AAA,并且报告它们在序列中的位置,
假如是 ATCGATCGAT
那 ATCG
TCGA
CGAT
这3种都算有重复(各出现了两次)吗?
并且以最大匹配的方式识别这些重复
这句话中的最大表表述得不清楚,这样整个序列都可能成为一个……
/*这个程序我修改了一下,现在编译应该没有问题了*/
#include<stdio.h>
#include<string.h>
#define WRONG -1
void substring(char*);
int getnum(char *s,char *s1);
int main(){
char str[] = "AAATAAATAAATAAATTTGCGATATATATATCGCGCGTAGGTAGGTAGGTAGGCGATTTCGATTTCGATTTCGATTTCGATTT";
substring(str);
getch();
return 0;
}
void substring(char *p)
{
/*
** point 出现位置, frequency 连着出现次数, maxlen 字符串长度
*/
int point,frequency=1,maxlen=0,i,j=0,k=0,n,fr=0,max=1,l;
char *temp,*s;
temp = (char*)malloc(500);/*从母字符串提取出来,与其比较的字符串*/
s = (char*)malloc(500); /*找到后要输出的字符串*/
for(j=0;p[j];)
{ /*从第一个位置(A)开始一直到最后一个(T)确定每一个位置的最大匹配数*/
for(k=0;p[k+j];k++)
{
for(l=0;l<=k;l++)
temp[l] = p[l+j];
temp[k+1] = '\0';