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 閱讀(524)
評論(0) 編輯 收藏 引用 所屬分類:
C/C++