[POJ]1002(转)
#include <stdio.h> #include <stdlib.h> #include <string.h> /* Copyright Derek Kisman (ACM ICPC ECNA 1999) */ char map[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}; char ph[100000][9]; int nph; char buf[1000]; main() { int i, j, k, x, y, z, n; char ch; memset( ph, 0, sizeof(ph) ); scanf( " %d", &nph ); for( i = 0; i < nph; i++ ) { scanf( " %s", buf ); x = 0; for( j = 0; buf[j]; j++ ) { if( buf[j] == '-' ) continue; if( buf[j] >= 'A' && buf[j] <= 'Z' ) buf[j] = map[buf[j]-'A']; ph[i][x++] = buf[j]; if( x == 3 ) ph[i][x++] = '-'; } } qsort( ph, nph, 9, strcmp ); x = 1; z = 0; for( i = 1; i < nph; i++ ) { if( strcmp( ph[i-1], ph[i] ) ) { if( x > 1 ) { printf( "%s %d\n", ph[i-1], x ); z = 1; } x = 1; } else { x++; } } if( x > 1 ) { printf( "%s %d\n", ph[i-1], x ); z = 1; } if( !z ) printf( "No duplicates.\n" ); }