题目描述:
一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。
给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。
知识点: 字符串
输入: 输入一个string型基因序列,和int型子串的长度
输出: 找出GC比例最高的字串
样例输入: AACTGTGCACGACCTGA 5
样例输出: GCACG
代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string dna, temp;
int n = 0, count = 0, max = 0;
cin >> dna;
cin >> n;
if (n>dna.size())
{
return 0;
}
else
{
for (int i = 0; i <= dna.size() - n; ++i)
{
for (int k = 0; k<n; ++k)
{
if (dna.substr(i, n)[k] == 'G' || dna.substr(i, n)[k] == 'C')
{
count++;
}
}
if (count>max)//这里如果改成大于等于,那么就默认输出最后一段字串
{
max = count;
temp = dna.substr(i, n);
}
count = 0;
}
cout << temp << endl;
}
return 0;
}