DNA序列找GC-Ratio最高子序列

来源:互联网 发布:淘宝在哪里看几心 编辑:程序博客网 时间:2024/04/29 18:44
 一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。
给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。
 
 
知识点:  字符串 
题目来源:  内部整理 
练习阶段:  初级 
运行时间限制: 10Sec
内存限制: 128MByte
输入:  
输入一个string型基因序列,和int型子串的长度
 
输出:  
找出GC比例最高的字串
 
样例输入:
AACTGTGCACGACCTGA
5
                  
样例输出:
GCACG

#include <stdio.h>#include <stdlib.h>#include <string.h>char *getSubString(char *str,int n){    char *result=(char*)malloc(sizeof(char)*(n+1));    char *p=str;    int i,j,len,cnt,maxCnt;    char tempChar;    len=strlen(str);    if(len<n)        return NULL;    else    {        maxCnt=0;        for(i=0;i<len-n-1;i++)        {            cnt=0;            for(j=0;j<n;j++)            {                tempChar=*(str+i+j);                if(tempChar=='C'||tempChar=='G')                    cnt++;            }            if(cnt>maxCnt)            {                p=str+i;                maxCnt=cnt;                if(maxCnt==n)                    break;            }        }        if(maxCnt==0)            return NULL;        else        {            strncpy(result,p,n);            return result;        }    }}int main(){    char str[2048];    int n;    scanf("%s",str);    scanf("%d",&n);    printf("%s\n",getSubString(str,n));    return 0;}


0 0
原创粉丝点击