环状DNA序列

大意:

一个DNA序列是环状的,这意味着有N个碱基的序列有N种表示方法(假设无重复)。而这N个序列有一种最小的表示,这个最小表示的意思是这个序列的字典序最小(字典序的意思是在字典中的大小 比如ABC<ACB,B<BCD,EF<G)

方法:在一个序列中从任意两个位置开始,产生的序列的大小是可以比较的。然后利用这种比较方法找出最小值

#include <iostream>
using namespace std;

#define MAX 105

int lessthan(char s[],int p,int q)   //一个序列从p开始和从q开始的大小
{
    long len = strlen(s);
    for(int i = 0;i<len;i++)
    {
        if(s[(p+i)%len] != s[(q+i)%len])
            return s[(p+i)%len]<s[(q+i)%len];   //比较大小
    }
    return 0;
}

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        char s[MAX];
        cin>>s;
        long n = strlen (s) ;
        int flag = 0;
        for(int i = 0;i < n;i++)  //相当于找出数组中最小的元素
        {
            if(lessthan(s,i,flag))
                flag = i;
        }

        for(int i = 0;i<n;i++)
            cout<<s[(flag+i)%n];
        cout<<endl;
    }
}

环状DNA序列,布布扣,bubuko.com

时间: 2024-10-26 04:49:16

环状DNA序列的相关文章

HDU 1560 DNA sequence(DNA序列)

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 10.5000pt } h1 { margin-top: 5.0000pt; margin-bottom: 5.0000pt; text-align: center; font-family: 宋体; color: rgb(26,92,200); font-weight: bold; fo

2015年“深圳杯”数学建模夏令营 B题:DNA序列的k-mer index问题

这个问题来自 DNA序列的k-mer index问题. 给定一个DNA序列,这个系列只含有4个字母ATCG,如 S ="CTGTACTGTAT".给定一个整数值k,从S的第一个位置开始,取一连续k个字母的短串,称之为k-mer(如k= 5,则此短串为CTGTA), 然后从S的第二个位置, 取另一k-mer(如k= 5,则此短串为TGTAC),这样直至S的末端,就得一个集合,包含全部k-mer . 如对序列S来说,所有5-mer为 {CTGTA,TGTAC,GTACT,TACTG,ACT

利用Python【Orange】结合DNA序列进行人种预测

http://blog.csdn.net/jj12345jj198999/article/details/8951120 coursera上 web intelligence and big data 终于布置了HW7,这一次的要求是对一系列DNA序列进行预测,具体说明如下: Data Analytics Assignment (for HW7) Predict the Ethnicity of Individuals from their Genes =====================

华为OJ平台——DNA序列

题目描述: 一个DNA序列由A/C/G/T四个字母的排列组合组成.G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度).在基因工程中,这个比例非常重要.因为高的GC-Ratio可能是基因的起始点. 给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列. 输入 输入一个string型基因序列,和int型子串的长度 输出 找出GC比例最高的字串 样例输入 AACTGTGCACGACCTGA

华为OJ:DNA序列

初始化两个数组,一个序列数值数组K[N],一个序列和数组SUM[N],先遍历一边序列,为C或者G则K[i]为1,否则则置为0,然后计算连续M个K[I]之和存入SUM就行. import java.util.Scanner; public class DNAsquence { public static void main(String args[]){ Scanner input=new Scanner(System.in); String s=input.next(); int n=input

2015年“深圳杯”数学建模夏令营-B题:DNA序列的k-mer index 问题

这是一个山科大的同学给我的一个问题,向我询问一下思路,对于数学建模,我没太多的了解,所以只能用计算机程序的方法来解答. 这是具体的问题: 这个问题来自 DNA序列的k-mer index问题. 给定一个DNA序列,这个系列只含有4个字母ATCG,如 S ="CTGTACTGTAT".给定一个整数值k,从S的第一个位置开始,取一连续k个字母的短串,称之为k-mer(如k= 5,则此短串为CTGTA), 然后从S的第二个位置, 取另一k-mer(如k= 5,则此短串为TGTAC),这样直至

[SCU 4501] DNA序列 (状压DP)

SCU - 4501 给定若干个DNA序列,求最短包含所有序列的长度 包含不一定是连续包含,可以不是子串 状压DP 依次构造每一位 把每个字符串走到的位置标记一下,压成6进制数 然后每个状态拓展一个字符串 然后同时拓展其他所有下一位与其相同的串 然后把状态丢到队列里转移,当每个串都走到结尾时输出答案 可以保证答案最多不超过40 时间复杂度 O(ans?lenN) #pragma comment(linker, "/STACK:102400000,102400000") #include

利用Needleman–Wunsch算法进行DNA序列全局比对

生物信息学原理作业第二弹:利用Needleman–Wunsch算法进行DNA序列全局比对. 具体原理:https://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm. 贴上python代码: 1 # -*- coding: utf-8 -*- 2 """ 3 Created on Sat Nov 25 18:20:01 2017 4 5 @author: zxzhu 6 后需修改: 7 1.加命令行参数 8 2

DNA序列局部比对(Smith–Waterman algorithm)

生物信息原理作业第三弹:DNA序列局部比对,利用Smith–Waterman算法,python3.6代码实现. 实例以及原理均来自https://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm. 1 import numpy as np 2 import pandas as pd 3 sequence1 = 'TGTTACGG' 4 sequence2 = 'GGTTGACTA' 5 s1 = '' 6 s2 = '' 7 gap =