C语言问题:DNA排序

Python014

C语言问题:DNA排序,第1张

输入

计算逆序

稳定排序

代码:

#include <stdio.h>

#include <string.h>

typedef struct

{

char arr[51]

int v

}ARR

int main()

{

ARR list[100]

ARR t

int n,l,i,j,k

scanf("%d%d", &l, &n)

for(i = 0 i < n i ++)

{

scanf("%s", list[i].arr)

list[i].v = 0

for(j = 0 j < l - 1 j ++)

{

for(k = j + 1 k < l k ++)

if(list[i].arr[k] < list[i].arr[j])

list[i].v ++

}

}

for (i = 0 i < n i++) 

{         

for (j = n - 1 j > i j--)

{     

if (list[j].v < list[j-1].v) 

{        

memcpy(&t, &list[j-1], sizeof t)   

memcpy(&list[j-1], &list[j], sizeof t)   

memcpy(&list[j], &t, sizeof t)   

}      

}   

for(i = 0 i < n i ++)

printf("%s\n", list[i].arr)

return 0

}

供参考

是否有问题? 有问题请追问 没问题请采纳

没用C写,用python写的,道理都一样。

def generate(n):  //n为长度

    for i in range(4**n):

        a=[0 for i in range(n)] //a为长度为n的一个序列

        num = i

        z = 0

        while(num!=0):

            a[z]=num%4

            z = z+1

            num = int(num/4)

        for j in a:

            if j==0:

                print('A',end="")

            elif j==1:

                print('T',end="")

            elif j==2:

                print('G',end="")

            else:

                print('C',end="")

        print()

原理就是四进制转换。

当调用函数generate(2),产生结果AA,TA,GA,CA,AT,TT,GT,CT,AG,TG,GG,CG,AC,TC,GC,CC

(index=0DNA[index]!='\\0'index++) { if (DNA[index]=='A') { printf ("-T")}else if (DNA[index]=='C') { printf ("-G")