#include <stdio.h>
#include <stdlib.h>
#define M 100 //字符串的最大长度行数
#define N 50 //字符串的字母最大长度
typedef struct number
{
int jiaobiao;
int paiming;
}node;
void init(char DNASORT[M][N],int *r,int *t) //初始化待处理的数据
{
int i,j;
int flag=0;//用来保存数据的输入正确
char c;//用来保存中间数据
while(!flag)
{
scanf("%d%d",r,t);
if(*r<=M&&*t<=N)
{
flag=1;
}
}
for(i=0;i<*t;i++)
{
for(j=0;j<*r;j++)
{
flag=0;
while(!flag)
{
scanf("%c",&c);
if(c=='A'||c=='C'||c=='G'||c=='T')
{
DNASORT[i][j]=c;
flag=1;
}
}
}
}
}
void sort(node DD[M],int t)
{
int i,j;
int tempjiaobiao;
int temppaiming;
for(i=0;i<t;i++)
{
for(j=i+1;j<t;j++)
{
if(DD[i].paiming>DD[j].paiming)
{
tempjiaobiao=DD[i].jiaobiao;
temppaiming=DD[i].paiming;
DD[i].jiaobiao=DD[j].jiaobiao;
DD[i].paiming=DD[j].paiming;
DD[j].jiaobiao=tempjiaobiao;
DD[j].paiming=temppaiming;
}
}
}
}
void chuli(char DNASORT[M][N],int r,int t) //处理初始化后的数据
{
node DD[M];
int i,j,k;
for(i=0;i<t;i++)
{
DD[i].jiaobiao=i;
DD[i].paiming=0;
}
for(i=0;i<t;i++)
{
for(j=0;j<r;j++)
{
for(k=j+1;k<r;k++)
{
if(DNASORT[i][j]>DNASORT[i][k])
{
DD[i].paiming=DD[i].paiming+1;
}
}
}
}
sort(DD,t);
for(i=0;i<t;i++)
{
k=DD[i].jiaobiao;
for(j=0;j<r;j++)
{
printf("%c",DNASORT[k][j]);
}
printf("\n");
}
}
void print(char DNASORT[M][N],int r,int t) //显示处理后的数据
{
int i,j;
for(i=0;i<t;i++)
{
for(j=0;j<r;j++)
{
printf("%c",DNASORT[i][j]);
}
printf("\n");
}
}
main()
{
char DNASORT[M][N];//定义一个DNA数组用来保存数据
int r,t;
init(DNASORT,&r,&t);
chuli(DNASORT,r,t);
//print(DNASORT,r,t);
}
#include <stdlib.h>
#define M 100 //字符串的最大长度行数
#define N 50 //字符串的字母最大长度
typedef struct number
{
int jiaobiao;
int paiming;
}node;
void init(char DNASORT[M][N],int *r,int *t) //初始化待处理的数据
{
int i,j;
int flag=0;//用来保存数据的输入正确
char c;//用来保存中间数据
while(!flag)
{
scanf("%d%d",r,t);
if(*r<=M&&*t<=N)
{
flag=1;
}
}
for(i=0;i<*t;i++)
{
for(j=0;j<*r;j++)
{
flag=0;
while(!flag)
{
scanf("%c",&c);
if(c=='A'||c=='C'||c=='G'||c=='T')
{
DNASORT[i][j]=c;
flag=1;
}
}
}
}
}
void sort(node DD[M],int t)
{
int i,j;
int tempjiaobiao;
int temppaiming;
for(i=0;i<t;i++)
{
for(j=i+1;j<t;j++)
{
if(DD[i].paiming>DD[j].paiming)
{
tempjiaobiao=DD[i].jiaobiao;
temppaiming=DD[i].paiming;
DD[i].jiaobiao=DD[j].jiaobiao;
DD[i].paiming=DD[j].paiming;
DD[j].jiaobiao=tempjiaobiao;
DD[j].paiming=temppaiming;
}
}
}
}
void chuli(char DNASORT[M][N],int r,int t) //处理初始化后的数据
{
node DD[M];
int i,j,k;
for(i=0;i<t;i++)
{
DD[i].jiaobiao=i;
DD[i].paiming=0;
}
for(i=0;i<t;i++)
{
for(j=0;j<r;j++)
{
for(k=j+1;k<r;k++)
{
if(DNASORT[i][j]>DNASORT[i][k])
{
DD[i].paiming=DD[i].paiming+1;
}
}
}
}
sort(DD,t);
for(i=0;i<t;i++)
{
k=DD[i].jiaobiao;
for(j=0;j<r;j++)
{
printf("%c",DNASORT[k][j]);
}
printf("\n");
}
}
void print(char DNASORT[M][N],int r,int t) //显示处理后的数据
{
int i,j;
for(i=0;i<t;i++)
{
for(j=0;j<r;j++)
{
printf("%c",DNASORT[i][j]);
}
printf("\n");
}
}
main()
{
char DNASORT[M][N];//定义一个DNA数组用来保存数据
int r,t;
init(DNASORT,&r,&t);
chuli(DNASORT,r,t);
//print(DNASORT,r,t);
}