兮兮落落 2016-11-29 05:24 采纳率: 0%
浏览 937
已结题

简单的一道c程序,为什么总是wa%50

举个例子来说明DNA逆序数的概念:比如“ACGT”,从左至右,任意一个字母的字典序均比其左侧的字母大,故其逆序数为0;又比如“DAABEC”,因为D大于右边四个单词A A B C,E大于右边的C,所以该序列总的逆序数计算结果为4 + 1 = 5;再比如“AAAAA”,其逆序数为0。
Input

输入包含多组数据,至EOF为止。首先输入两个正整数n,m,分别表示每个NDA序列的长度均为m,共有n个DNA序列,接下来n行每行输入一个长度为m的DNA序列。如果两个DNA序列的逆序数相同,就按照输入顺序输出。(0 <= n,m <= 100)

Output

每组数据输出均包含n行,按逆序数从小到大的顺序输出这n个DNA序列,每个占一行。

Sample Input

6 10
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT
Sample Output

CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA

代码:#include
#include
int main()
{
int m,n,i,j,k,temp;
char a[105][105];
loop:
while(scanf("%d %d",&n,&m)!=EOF)
{
getchar();
if(m==0||n==0) goto loop;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
scanf("%c",&a[i][j]);
}
getchar();
}
int num[105]= {0},b[105]= {0};
for(i=1; i<=n; i++)
{
for(j=1; j {
k=j;
while(k {
k++;
if(a[i][j]>a[i][k])
{
num[i]++;
b[i]=num[i];
}
}
}
}
for(i=1; i<n; i++)
for(j=i+1; j<n+1; j++)
if(num[j]<num[i])
{
temp=num[i];
num[i]=num[j];
num[j]=temp;
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(num[i]==b[j])
{
for(k=1; k<=m; k++)
{
printf("%c",a[j][k]);
}
printf("\n");
b[j]=-1;
}
}
}
}
return 0;
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-11-29 09:48
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图