heiseon
我想站立在这个世界,却有太多的人不像我站起来。
posts - 0,  comments - 0,  trackbacks - 0

这道题主要是字符串的比较和排序,这道题感觉不难,但是一直就卡在RE了。请哪位要是能看出来的话请帮帮我,纠结中。
以下附上我的代码:拜托了!
#include<stdio.h>
#include<string.h>
int main()
{
 int n,i,j,k,m=0,count[100001],t,flag=0,b[100001],len;
 char phn[100001][100],s[100001][8],a[100001];
 memset(count,0,sizeof(count));
 scanf("%d",&n);
 for(i=0;i<n;i++)                                                    //读入字符串;
         scanf("%s",phn[i]);                                              
 for(i=0;i<n;i++)
         { len=strlen(phn[i]);                                                           //把英文字母全部改成相应的‘数字’,把连接符‘-’去掉;
         o: for(j=0;j<len;j++)
         {if(phn[i][j]=='A'||phn[i][j]=='B'||phn[i][j]=='C')  {phn[i][j]='2';continue;}      
           if(phn[i][j]=='D'||phn[i][j]=='E'||phn[i][j]=='F')  {phn[i][j]='3';continue;}
          if(phn[i][j]=='G'||phn[i][j]=='H'||phn[i][j]=='I')  {phn[i][j]='4';continue;}
          if(phn[i][j]=='J'||phn[i][j]=='K'||phn[i][j]=='L')  {phn[i][j]='5';continue;}
          if(phn[i][j]=='M'||phn[i][j]=='N'||phn[i][j]=='O')  {phn[i][j]='6';continue;} 
          if(phn[i][j]=='P'||phn[i][j]=='R'||phn[i][j]=='S')  {phn[i][j]='7';continue;}
         if(phn[i][j]=='T'||phn[i][j]=='U'||phn[i][j]=='V')  {phn[i][j]='8';continue;}
         if(phn[i][j]=='W'||phn[i][j]=='X'||phn[i][j]=='Y')  {phn[i][j]='9';continue;}
        if(phn[i][j]=='-')  
       { for(k=j;k<len;k++)
             phn[i][k]=phn[i][k+1];
            goto o;
          }
             }
    phn[i][7]='\0';
      }
 for(i=0;i<n-1;i++)
  {for(j=i+1;j<n;j++)                                                                              //判断有没有重复的,有就count++;count下标是第一次出现的那个字符串的下标;把第二次
                                                                                                                  开始出现的都改成EOF,避免重复计数,
        
    {if(strcmp(phn[i],phn[j])==0&&strcmp(phn[i],"EOF")!=0)  
          {count[i]++;
              strcpy(phn[j],"EOF");
             }
      }

     }
 for(i=0;i<n-1;i++)
         {if(count[i]>0 )                         
           {strcpy(s[m],phn[i]);
            b[m]=count[i];
      m++;
           }
      }
 if(m>0){for(i=0;i<m-1;i++)
            for(j=0;j<m-1-i;j++)                     //按字典的输出顺序排序
                     if(strcmp(s[j],s[j+1])>0)
          {
        strcpy(a,s[j]);
        strcpy(s[j],s[j+1]);
        strcpy(s[j+1],a);
        t=b[j];
        b[j]=b[j+1];
        b[j+1]=t;
                }
           for(i=0;i<m;i++)                           //输出
             {for(j=0;j<3;j++)
             printf("%c",s[i][j]);
           printf("-");
        for(j=3;j<7;j++)
                   printf("%c",s[i][j]);
        printf(" %d\n",b[i]+1);
         } 
         }
 if(m==0)     printf("No duplicates.\n");
return 0;    
}

posted on 2010-08-01 17:21 heiseon 阅读(237) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理



<2026年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿

文章档案

搜索

  •  

最新评论