| ||||||||||
| 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 | |||||||||
俺是菜鸟,超时了,求高人分析解答,谢谢了啊!!!!#include<stdio.h>
#include<string.h>
char Ato1(char c) //转换成数字
{
switch(c)
{
case 'A':case 'B':case 'C':return 50;break;
case 'D':case 'E':case 'F':return 51;break;
case 'G':case 'H':case 'I':return 52;break;
case 'J':case 'K':case 'L':return 53;break;
case 'M':case 'N':case 'O':return 54;break;
case 'P':case 'R':case 'S':return 55;break;
case 'T':case 'U':case 'V':return 56;break;
case 'W':case 'X':case 'Y':return 57;break;
}
}
void main()
{
char a[100000][8];
int n,i,j,k,m;
char c;
scanf("%d",&n);
for(i=0;i<n;i++)
{
j=0;
while(j<7)
{
c=getchar();
if((c>47&&c<58))
{
a[i][j]=c; //输入
j++;
}
else if(c>='A'&&c<='Y')
{
a[i][j]=Ato1(c);
j++;
}
}
a[i][7]=1;
}
for(i=0;i<n-1;i++)
{
for(m=1;m+i<n;m++)
{
j=0;
for(k=0;k<7;k++)
if(a[i][k]==a[i+m][k])
j++; //数据是否全等
if(j==7&&a[i][7]!=0&&a[i+m][7]!=0)//0表示重复过了
{
a[i][7]+=1; //记录重复都少次
a[m+i][7]=0; //改变最后一位记录是否重复
}
else if(j!=7&&a[i][j+1]>a[i+m][j+1])
for(j=0;j<8;j++)
{
k=a[i][j];
a[i][j]=a[i+m][j];//排序
a[i+m][j]=k;
}
}
}
for(i=0;i<n;i++)
{
if(a[i][7]>1)
{
m=999;
for(j=0;j<7;j++)
{
if(j==3) // 输出
printf("-");
printf("%c",a[i][j]);
}
printf(" %d\n",a[i][7]);
}
}
if(m!=999)
printf("ds\n");
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator