| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
越來越有感覺了,0MS,有進步的感覺,大部份錯誤都是 50 和 51 的問題 '\0' 啊,吸取前人經驗2次pass// 1007_v001.c
// http://poj.org/problem?id=1007
#include <stdio.h>
#include <stdlib.h>
#define MAX_STRING_LEN 56
#define SORTNESS_OFFSET 52
#define MAX_STRING_NUMBER 100
int cmp_fun(const void * a, const void * b){
// a is a type of char **
int * sn1 = (int *)(*((char **)a) + SORTNESS_OFFSET);
int * sn2 = (int *)(*((char **)b) + SORTNESS_OFFSET);
return *sn1 - *sn2;
}
int main(){
int n;
int m;
int i;
int j;
int prev_sortedness = 0;
char prev_char = 0;
char s[MAX_STRING_NUMBER][MAX_STRING_LEN];
char * p_s[MAX_STRING_NUMBER];
int num_in = 0;
int * p_sortedness;
scanf("%d %d", &n, &m);
while(scanf("%s", s[num_in]) != EOF ){
p_sortedness = (int *)(&(s[num_in][SORTNESS_OFFSET]));
p_s[num_in] = s[num_in];
*p_sortedness = 0;
// calculate sortedness
for(i = 0; i < n; i++){
if(s[num_in][i] == 'A'){
}else if((i > 0 && i < n) && prev_char == s[num_in][i]){
(*p_sortedness) += prev_sortedness;
}else{
prev_sortedness = 0;
if(s[num_in][i] == 'C'){
// Count A
for(j = i + 1; j < n; j++){
if(s[num_in][j] < 'C'){
(*p_sortedness)++;
prev_sortedness++;
}
}
}else if(s[num_in][i] == 'G'){
// Count A C
for(j = i + 1; j < n; j++){
if(s[num_in][j] < 'G'){
(*p_sortedness)++;
prev_sortedness++;
}
}
}else if(s[num_in][i] == 'T'){
// Count A C G
for(j = i + 1; j < n; j++){
if(s[num_in][j] < 'T'){
(*p_sortedness)++;
prev_sortedness++;
}
}
}
}
prev_char = s[num_in][i];
}
num_in++;
}
// qsort
qsort(p_s, num_in, sizeof(char *), cmp_fun);
for(i = 0; i < num_in; i++){
if(i == 0)
printf("%s", *(p_s + i));
else
printf("\n%s", *(p_s + i));
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator