当日总结
在生物信息学中,基因序列可以用一个由'A', 'T', 'C', 'G'组成的线性表表示。一种常见的变异是"倒位",即序列中的一段发生了反转。
你的任务是实现一个基因序列倒位检测系统,能够判断一个序列是否可以通过对原始序列进行一次倒位变异得到。
使用线性表存储基因序列
实现线性表的基本操作(初始化、插入、删除、复制、比较等)
实现子序列反转功能
实现倒位检测算法
输入格式:
第一行:原始基因序列(由'A','T','C','G'组成,长度不超过100)
第二行:当前基因序列(格式同上)
输出格式:
如果可以通过一次倒位得到,输出:(start,end),其中start和end是倒位区间的起始和结束索引(从0开始)。
如果有多个可能的解,输出字典序最小的解(即start较小的优先,如果start相同则end较小的优先)。
如果无法通过一次倒位得到,输出:(-1,-1)。
输入样例:
ATCGCTAT
ATCATCGT
输出样例:
在这里给出相应的输出。例如:
(3,6)
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 K
include
include
include
using namespace std;
int main()
{
string origin,current;
cin>>origin>>current;
if(origin.size()!=current.size()){
cout<<"(-1,-1)";
return 0;
}
int n=origin.size();
int best_l=n;
int best_r=n;
for(int l=0;l<n;l++)
{
for(int r=0;r<n;r++)
{
string temp=origin;
reverse(temp.begin()+l,temp.begin()+r+1);
if(tempcurrent)
{
if(l<best_l||(lbest_l&&r<best_r))
{
best_l=l;
best_r=r;
}
}
}
}
if(best_l==n)cout<<"(-1,-1)"<<endl;
else {
cout<<"("<<best_l<<","<<best_r<<")"<<endl;
}
return 0;
概

浙公网安备 33010602011771号