| ||||||||||
| 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 | |||||||||
第二个程序为什么不能原序输出?(两者除了count部分不同外,其余基本相同)
请大牛过目……
#include<stdio.h>
#include<string.h>
#define OK 1
struct list
{
char c[51];
int t;
}a[100];
int main()
{
int count(char str[]);
int sort(int m);
int m,n,i;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++)
{
scanf("%s",a[i].c);
a[i].t=count(a[i].c);
}
sort(m);
for(i=0;i<m;i++)
{
printf("%s\n",a[i].c);
}
return OK;
}
int count(char str[])
{
int i,j,sum=0;
for(i=0;str[i];i++)
{
for(j=i+1;str[j];j++)
{
if(str[i]>str[j])
{
sum++;
}
}
}
return sum;
}
int sort(int m)
{
int i,j,k;
struct list temp;
for(i=0;i<m-1;i++)
{
k=i;
for(j=i+1;j<m;j++)
{
if(a[k].t>a[j].t)
{
k=j;
}
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
return OK;
}
第二个
#include<stdio.h>
#include<string.h>
int count(char str[], int len)
{
int i;
int sum = 0;
int a[4] = {0};
for(i = len - 1; i >= 0; i--) {
switch (str[i]) {
case 'A':
a[0]++;
a[1]++;
a[2]++;
break;
case 'C':
a[1]++;
a[2]++;
sum += a[0];
break;
case 'G':
a[2]++;
sum += a[1];
break;
case 'T':
sum += a[2];
}
}
return sum;
}
struct list
{
char c[51];
int t;
}a[101];
int sort(int m)
{
int i,j,k;
struct list temp;
for(i=0;i<m-1;i++)
{
k=i;
for(j=i+1;j<m;j++)
{
if(a[k].t>a[j].t)
{
k=j;
}
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
return 0;
}
int main()
{
int m,n,i;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++)
{
scanf("%s",a[i].c);
a[i].t=count(a[i].c,m);
}
sort(m);
for(i=0;i<m;i++)
printf("%s\n",a[i].c);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator