| ||||||||||
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 |
Re:第一次发代码,很挫,大家见谅!已经AC了哦In Reply To:第一次发代码,很挫,大家见谅!已经AC了哦 Posted by:xiaodaodao at 2013-03-27 10:28:43 > /* > 采用标记法:当出现C时候,c_flag = 1,那么后面扫描到A的时候,判断此标记是否为1,当再次出现C时候,c_flag++,因为多了一个C在前面,呵呵~ > 是则count++,当出现G时候,g_flag = 1, 那么当后面出现C和A时候,判断此标记是否为1,当再次出现C时候,g_flag++,因为多了一个G在前面,呵呵~ > 是则count++,当出现T时候,t_flag = 1, 那么当后面出现C,A,G时候,判断此标记是否为1,当再次出现T时候,t_flag++,因为多了一个T在前面,呵呵~ > */ > > // A 最小,所以不需要~ > > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > > typedef struct > { > int w; // 权值 > char str[50]; > }data; > > int cmp( const void * a, const void * b ) > { > return ( (*(data*)a).w - (*(data*)b).w ); > } > > int main() > { > int c_flag = 0; > int g_flag = 0; > int t_flag = 0; > int i, n, m, j, t; > data d[100]; > > while( scanf("%d%d", &n, &m) != EOF ) > { > getchar(); > i = -1; > t = m; > while( m-- ) > { > c_flag = 0; > g_flag = 0; > t_flag = 0; > gets( d[++i].str ); > > // 下面计算权值! > j = -1; > d[i].w = 0; // 初始化 > while( d[i].str[++j] ) > { > if( d[i].str[j] == 'A' ) > { > if( c_flag ) > { > d[i].w += c_flag; > } > if( g_flag ) > { > d[i].w += g_flag; > } > if( t_flag ) > { > d[i].w += t_flag; > } > } > else if( d[i].str[j] == 'C' ) > { > c_flag++; > if( g_flag ) > { > d[i].w += g_flag; > } > if( t_flag ) > { > d[i].w += t_flag; > } > } > else if( d[i].str[j] == 'G' ) > { > g_flag++; > if( t_flag ) > { > d[i].w += t_flag; > } > } > else if( d[i].str[j] == 'T' ) > { > t_flag++; > } > } > } > > qsort( d, t, sizeof( data ), cmp ); > > for( i = 0; i < t; i++ ) > { > puts( d[i].str ); > } > } > > return 0; > } > > > Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator