永发信息网

(求每一行算法的解释,比较简单的就不用了)DNA Sorting

答案:1  悬赏:0  手机版
解决时间 2021-01-27 16:07
  • 提问者网友:那叫心脏的地方装的都是你
  • 2021-01-27 03:25
(求每一行算法的解释,比较简单的就不用了)DNA Sorting
最佳答案
  • 五星知识达人网友:神的生死簿
  • 2021-01-27 04:43
题目的大致意思你知道的吧,目的是整理一段含(A,T,C,G)序列的DNA,标准是``sortedness'',中文暂时叫“有序程度”。

typedef struct //定义一个结构体
{
string dna; //定义DNA序列
int count; //DNA序列的“有序程度”,用一个整数表示
}DNA;
DNA dna[101]; //定义101个dna类型的结构体
int cmp(const void *a,const void *b) //比较两个dna序列的“有序程度“
{
DNA *aa = (DNA *)a;
DNA *bb = (DNA *)b;
return aa->count-bb->count;
}
int main()
{
int n,m;
char c;
cin>>n>>m; //输入DNA序列长度和个数
for(int i = 0; i < m; i++)
{
cin>>dna[i].dna; //输入第i个DNA序列的内容
dna[i].count = 0; //“有序程度“初始化为0
for(int j = 0; j < n; j++)
for(int k = j+1; k < n; k++) //第i个序列里,比较第j个字母和它之后的所有字母
{
if(dna[i].dna[j]>dna[i].dna[k]) //如果j之后第k个字母比第j个字母小
dna[i].count++; //“有序程度”+1
}
}
qsort(dna,m,sizeof(dna[0]),cmp); //对m个DNA序列的有序程度排序(这个程序没具体代码没办法具体说)
for(int i = 0; i < m; i++)
cout< return 0;追问int cmp(const void *a,const void *b) //比较两个dna序列的“有序程度“
{
DNA *aa = (DNA *)a;
DNA *bb = (DNA *)b;
return aa->count-bb->count;
}

题目的大致意思我明白。就是这一段不是太懂,麻烦你给我详细说一下啦~追答函数的参数是两个空指针,函数里定义了两个指向结构体的指针,赋值时是把参数强制转换为dna结构体类型。然后比较两个结构体里count值的大小。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯