uva 755 poj 1002 487-3279

来源:互联网 发布:美国零售数据最新 编辑:程序博客网 时间:2024/05/16 05:07

题意:

给一堆只有数字  大写字母除(Q,Z)外和字符‘-’    组成的字符串    他们的标准形式是如   123-1234   最后要求判断标准形式是否出现了重复的电话号码   有重复的 输出标准形式后空一格 接着输出重复的次数   如  123-1234 2    

输入没有重复的就输出   No duplicates. 

终于过了 5次 WA   4次TLE   6次RE     不知道什么原因   方法都一样的就是不能过 郁闷啊      最后重写一遍就A了   真的很郁闷啊

//这道题是poj上的1002  过的  uva输入不一样  应该改一下  当时做的时候uva挂了只有用poj做    #include<cstdio>#include<cstring>#include<cctype>#include<algorithm>using namespace std;int m[26] = {2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 0, 7,7, 8, 8, 8, 9, 9, 9, 0};int main(){#ifdef LOCAL    freopen("in.txt","r",stdin);#endif // LOCAL    int N;    scanf("%d",&N);    int phone[100005];    char s1[1000];    for(int i = 0; i < N ; i++)        phone[i] = 0;    for(int i = 0; i < N; i++)    {        scanf("%s",s1);        int t;        for(int j = 0; s1[j]!='\0'; j++)        {            if(s1[j] == '-'||s1[j]=='Q'||s1[j]=='Z') continue;            if( isdigit(s1[j]) )  t= s1[j]-'0';            else if( isupper(s1[j]) )  t = m[s1[j]-'A'];            phone[i] =(phone[i]*10 + t);        }    }    sort(phone,phone+N);    int z = 0,x =1;    for(int i = 1; i < N; i++ )    {        if( phone[i-1] != phone[i] )        {            if( x > 1 )            {                printf( "%03d-%04d %d\n", phone[i-1]/10000,phone[i-1]%10000, x );                z = 1;            }            x = 1;        }        else        {            x++;        }    }    if(x > 1) { printf( "%03d-%04d %d\n", phone[N-1]/10000,phone[N-1]%10000, x );z = 1;}    //最后一定要记得判断x是否大于1  大于1的话最后一个就是重复的 不判断就会WA    if(!z) printf( "No duplicates.\n" );    return 0;}



原创粉丝点击