Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

高手,请帮一下忙,老是超时!!!!!!!!!!!!!!1002 1002 1002 1002

Posted by 589742 at 2005-10-06 16:04:39 on Problem 1002
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
char getNumber(char c){
    switch(c){
        case 'A': case 'B': case 'C': return '2'; break;
        case 'D': case 'E': case 'F': return '3'; break;
        case 'G': case 'H': case 'I': return '4'; break;     
        case 'J': case 'K': case 'L': return '5'; break;
        case 'M': case 'N': case 'O': return '6'; break;     
        case 'P': case 'R': case 'S': return '7'; break;
        case 'T': case 'U': case 'V': return '8'; break;
        case 'W': case 'X': case 'Y': return '9'; break; 
    }    
}    
int main(int argc, char *argv[])
{
    int i,j,digit,temp,flag[100000],add[100000];
    char c,str[100000][9];
    cin>>digit;
    for( i=0;i<digit;i++){
        for(j=0;j<8;j++){
            if(j==3){
                str[i][j]='-';
                continue;
            } 
            cin>>c;
            while(c=='-') cin>>c;
            if(c!='-'){
                if((c>='0')&&(c<='9')){
                    str[i][j]=c;
                }    
                else str[i][j]=getNumber(c); 
            }       
        }  
        str[i][8]='\0';   
    }       
    for(i=0;i<digit;i++){
        flag[i]=1;
        add[i]=i;
    } 
    for(i=0;i<digit;i++)
        if(flag[i]!=0)
            for(j=i+1;j<digit;j++)
                if(flag[j]!=0)
                  if(!strcmp(str[i],str[j])){
                    ++flag[i];     
                    flag[j]=0;
                  }          
    for(i=0;i<digit;i++)
        if(flag[i]>1){
            for(j=i+1;j<digit;j++)
                if((flag[j]>1)&&strcmp(str[add[i]],str[add[j]])>0){    
                    temp=add[i];add[i]=add[j]; add[j]=temp; 
                    temp=flag[i];flag[i]=flag[j];flag[j]=temp;             
                }  
        }                    
    for(i=0,j=0;i<digit;i++)
        if(flag[i]>1){
            cout<<str[add[i]]<<" "<<flag[i]<<endl;      
            ++j;
        }
    if(j==0) cout<<"No duplicates."<<endl;                    
  system("PAUSE");	
  return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator