UVA755- 487-3279

对于这个题,花费的时间也不少。
错误一;由于考虑不全
1


40
0U--4N712
---X2-KN-U-75
VR-J37G--3
85W-0Y6-V
85W-0Y6-V
85W-0Y6-V
--N-6AV4-NK
--XL----F-PO--B-0
-P-10167P
7--R8YME-N
P-U-1O6W-----1
X-KFK87--L
YFX63K-N
-3-73G---ELH
--2RD-6-IJ-Y
P2--SJ9G9
P2--SJ9G9
O-1----2287-2
-DC-C1L-3V
7963V68
U-66X52M
U-66X52M
-8-16F5TG
---YN-32E5-K
---YN-32E5-K
4--KDJ-PV2
4--KDJ-PV2
P27-42L2
P27-42L2
-MIWO-W5D
44M7675
F---6-7R80M
T5S6U1-P
T5S6U1-P
T5S6U1-P
BUM85L--3
BUM85L--3
DB1E---046
36O--7-1W2
-R--52-P-Y7H




输出:
286-8553 2
453-5782 2
727-4252 2
727-5949 2
857-6817 3
859-0968 3
866-9526 2
963-2355 2


最后的两个号码相同时,不会输出,
我完善了循环后


交上还是wa


这就是因为错误二,
不认真读题
没有重复的时候应该输出No duplicates.

以后做题,还是得注意这两个方面!!!

#include <iostream>
#include <cstdlib>
using namespace std;
int com (const void *a,const void *b)
{
    int * c = (int *)a;
    int * d = (int *)b;
    for(int i = 0; i < 7; i++)
    {
        //cout<<*(c+i) <<" "<< *(d+i)<<endl;
        if(*(c+i) != *(d+i))return *(c+i) - *(d+i);
    }
    return 0;
}
int main ()
{
    int n;
    cin>>n;
    while(n--)
    {
        int flag = 0;
        int num;
        cin>>num;
        cin.get();
        //cout<<num<<endl;
        int a[num][7];
        int N = num;
        while(N)
        {
            N--;
            int i = 0;
            char ch;
            while((ch=cin.get())!='\n')
            {
                if(ch>='A'&&ch<='P')a[N][i++] = (ch-'A')/3+2;
                else if(ch == 'R'||ch == 'S')a[N][i++] = 7;
                else if(ch>='T'&&ch<='Y')a[N][i++] = (ch-'T')/3+8;
                if(ch>='0'&&ch<='9')a[N][i++] = ch-'0';

            }
//            for( i = 0; i < 7; i++)
//                cout<<a[N][i];
//            cout<<endl;

        }
        qsort(a,num,sizeof(a[0]),com);
        int count = 1;
        for(int i = 0; i < num-1; i++)
        {
            for(int j = 0; j < 7; j++)
            {
                if(a[i][j]!=a[i+1][j])
                {
                    if(count>1)
                    {flag = 1;
                        for(int k = 0; k < 7; k ++)
                        {
                            if(k == 3)cout<<"-";
                            cout<<a[i][k];
                        }
                        cout<<" "<<count;
                        cout<<endl;
                    }
                    count = 1;
                    break;
                }
                else if( j == 6)count++;
            }
            if(i == num-2&&count>1)
            {flag = 1;
                for(int k = 0; k < 7; k ++)
                {
                    if(k == 3)cout<<"-";
                    cout<<a[i][k];
                }
                cout<<" "<<count;
                cout<<endl;
            }
        }
        if(!flag)cout<<"No duplicates."<<endl;
        if(n)cout<<endl;
    }
    return 0;
}



posted on 2012-08-21 10:21  Primo...  阅读(163)  评论(0编辑  收藏  举报