Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 61155 | Accepted: 24162 |
Description
Input
Output
Sample Input
10 6 AACATGAAGG TTTTGGCCAA TTTGGCCAAA GATCAGATTT CCCGGGGGGA ATCGATGCAT
Sample Output
CCCGGGGGGA AACATGAAGG GATCAGATTT ATCGATGCAT TTTTGGCCAA TTTGGCCAAA
先简单说一下题名意思。题名意思是说有一些字符串,这些字符串的字符不都是按先后顺序排的。这些字符串都对应一个值,这个值是倒序数的总和。例如:AACEDGG只有E和D是反的,所以这个值是1。GCA这个串的值就是3(GA、GC、CA都是反的)。
#include <stdio.h>
#include <string.h>
int Sum(char a[],int n)
{
int k,j,sum=0;
for (j=0;j<n;j++)
{
for (k=j+1;k<n;k++)
{
if (a[j]>a[k]) sum++;
}
}
return sum;
}
int main(int argc, char *argv[])
{
int n,m;
int i,j,t;
char a[128][60],c[110];
int b[128];
scanf("%d%d",&n,&m);
for (i=0;i<m;i++)
{
scanf("%s",a[i]);
b[i]=Sum(a[i],n); //求b[i]的值
}
//冒泡
for (i=0;i<m-1;i++)
for (j=0;j<m-1-i;j++)
{
if(b[j]>b[j+1])
{
t=b[j]; strcpy(c,a[j]);
b[j]=b[j+1]; strcpy(a[j],a[j+1]);
b[j+1]=t; strcpy(a[j+1],c); //若前个b[i]大的话就交换 连同字符窜一起交换
}
}
for (i=0;i<m;i++)
printf("%s\n",a[i]);
return 0;
}
这道题错的主要原因是对于m,n没有区分开
数组开的不够大还是因为n,m混淆