| ||||||||||
| 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……是不是因为数组开得不够?#include "stdio.h"
#include "string.h"
char s1[10100][100];
void sort(int *d,int *a,int n)
{
int i,j,t;
for(i=1;i<=n;i++)
d[i]=i;
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
if(a[d[i]]<a[d[j]])
{
t=d[i];
d[i]=d[j];
d[j]=t;
}
}
}
}
void sort1(int *f,int n)
{
int i,j,k,t;
for(i=0;i<=n;i++)
f[i]=i;
for(i=0;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
for(k=0;s1[f[i]][k]&&s1[f[j]][k];k++)
{
if(s1[f[i]][k]>s1[f[j]][k])
{
t=f[i];
f[i]=f[j];
f[j]=t;
break;
}
else if(s1[f[i]][k]<s1[f[j]][k])
break;
}
if(s1[f[j]][k]==0)
{
t=f[i];
f[i]=f[j];
f[j]=t;
}
}
}
}
int main()
{
int i,j,k,p,q,cur,h;
char s[10100][100];
int b[1000];
int d[1000];
int f[1000];
int count[1000];
int tag1[1000];
int tag2[1000];
k=0;
gets(s[0]);
while(strcmp(s[k],"0")!=0)
{
while(strcmp(s[k],"1")!=0)
gets(s[++k]);
p=0;
for(i=0;i<k;i++)
{
if(s[i][0]>=65&&s[i][0]<=90)
{
b[++p]=i;
}
}
b[p+1]=k;
for(i=0;i<k;i++)
{
tag1[i]=1;
tag2[i]=1;
}
for(i=0;i<k;i++)
{
for(j=0;j<k;j++)
{
if(strcmp(s[i],s[j])==0)
{
if(i!=j)
{
for(q=i+1;q<j;q++)
{
if(s[q][0]>=65&&s[q][0]<=90)
{
tag1[i]=0;
tag1[j]=0;
break;
}
}
if(q==j)
{
tag2[j]=0;
}
}
}
}
}
for(i=1;i<=p;i++)
{
count[i]=0;
for(j=b[i]+1;j<b[i+1];j++)
{
if(tag1[j])
{
if(tag2[j])
count[i]++;
}
}
}
sort(d,count,p);
for(i=1;i<=p;)
{
q=0;
cur=i;
k=count[d[i]];
strcpy(s1[0],s[b[d[i]]]);
for(j=i+1;j<=p;j++)
{
if(count[d[j]]==k)
{
q++;
strcpy(s1[q],s[b[d[j]]]);
}
else
{
i=j;
break;
}
}
if(j>p)
i=j;
if(q>0)
{
sort1(f,q);
for(j=0;j<=q;j++)
printf("%s %d\n",s1[f[j]],count[d[cur]]);
}
else
printf("%s %d\n",s[b[d[cur]]],count[d[cur]]);
}
k=0;
gets(s[0]);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator