输入
计算逆序值
稳定排序
代码:
#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")