problem : http://acm.pku.edu.cn/JudgeOnline/problem?id=1007
reference : http://blog.csdn.net/china8848/archive/2008/03/29/2227131.aspx
source :
#include <stdio.h>
#include <memory.h>
#include <stdlib.h>
int n,m;
char DNA[100][100] = {0};
int calc_unsortedness(const char *pDNA, int length)
{
int i;
char a;
int left_C = 0, left_G = 0, left_T = 0;
int count = 0;
for(i = length-1; i >= 0; i--)
{
a = pDNA[i];
switch(a)
{
case 'A':
left_C++;
left_G++;
left_T++;
break;
case 'C':
left_G++;
left_T++;
count+=left_C;
break;
case 'G':
left_T++;
count+=left_G;
break;
case 'T':
count+=left_T;
break;
}
}
return count;
}
int compare(const void *arg1, const void *arg2)
{
return calc_unsortedness((const char *)arg1, n) - calc_unsortedness((const char *)arg2, n);
}
int main()
{
int i;
scanf("%d %d\n", &n, &m);
//memset(DNA, 0, sizeof(DNA));
for (i = 0; i < m; ++i)
gets(DNA[i]);
qsort((void *)DNA, m, sizeof(char) * 100, compare);
for (i = 0; i < m; ++i)
puts(DNA[i]);
return 0;
}
好久没做题了,今天回来得早。就把前几天看了的这题给实现了。AC的历程很奇怪。
首先是include了<search.h> ,结果: CE
接着是搞错了n和m,把DNA定义为 char DNA[50][100] 结果 : RTE
然后将他们倒了过来,就变成了OLE
百思不得其解,最后定义char DNA[100][100],就AC了
posted on 2008-04-15 22:35
margin 阅读(516)
评论(0) 编辑 收藏 引用 所属分类:
C/C++