| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
problem 1002,找不出问题在哪,自测数据,显示正确,但poj.org报wrong answer。哪位有空帮忙看下,谢谢!//c代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//pnh:phone number with hyphen
#define pnh_max_length 64
#define pn_length (7+1)
static char dict[26] =
{
'2',//A
'2',//B
'2',//C
'3',//D
'3',//E
'3',//F
'4',//G
'4',//H
'4',//I
'5',//J
'5',//K
'5',//L
'6',//M
'6',//N
'6',//O
'7',//P
-1,//Q
'7',//R
'7',//S
'8',//T
'8',//U
'8',//V
'9',//W
'9',//X
'9',//Y
-1//Z
};
//m : max or min
void getM(int* pnList, int pnCnt, char isMax, int* pM)
{
int m = pnList[0], i;
if('Y'==isMax)
{
for(i = 1; i < pnCnt; i++) {
m = (m < pnList[i] ? pnList[i] : m);
}
} else {
for(i = 1; i < pnCnt; i++) {
m = (m > pnList[i] ? pnList[i] : m);
}
}
(*pM) = m;
}
void findRepeat(int* pnList, int pnCnt)
{
int max, min, i, pn, cnt;
int * x = NULL;
int noneFlag = 0;
getM(pnList, pnCnt, 'Y', &max);
getM(pnList, pnCnt, 'N', &min);
cnt = max - min + 1;
x = (int*)( malloc(sizeof(int)*cnt) );
memset(x, 0, sizeof(int) * cnt);
for(i = 0; i < pnCnt; i++)
{
x[ pnList[i] - min ] ++;
}
for(i = 0; i < cnt; i++)
{
pn = min+i;
if(x[i] > 1) {
noneFlag = 1;
printf ("%03d-%04d %d\n", pn/10000, pn%10000, x[i]);
}
}
if(!noneFlag)
{
printf("No duplicates.\n");
}
free(x); x = NULL;
}
int main()
{
char szPnh[pnh_max_length];
char szPn[pn_length];
int cnt = 0, i, pnhLen, k, m, pn;
int* pnList = NULL;
memset(szPn, 0, pn_length);
memset(szPnh, 0, pnh_max_length);
scanf("%d", &cnt);
cnt = (cnt > 100000 ? 100000 : cnt);
pnList = malloc( sizeof(int) * cnt );
for(i = 0; i < cnt; i++)
{
scanf("%s", szPnh);
pnhLen = strlen(szPnh);
m = 0;
for(k=0; k < pnhLen; k++)
{
if('-' != szPnh[k])
{
if(szPnh[k] >= '0' && szPnh[k] <= '9') {
szPn[m] = szPnh[k];
} else {
szPn[m] = (szPnh[k] < 'Z' && szPnh[k] > 'A') ? dict[ szPnh[k] - 'A' ] : dict[ szPnh[k] - 'a' ];
}
m++;
}
else
{
continue;
}
}
szPn[m] = 0;
pn = atoi(szPn);
pnList[i] = pn;
}
findRepeat(pnList, cnt);
free(pnList); pnList = NULL;
return 0;
}
//测试数据sample_input.txt (结尾无空行)
23
4873279
ITS-EASY
888-4567
3-10-10-10
888-GLOP
TUT-GLOP
967-11-11
310-GINO
F101010
888-1200
-4-8-7-3-2-7-9-
487-3279
00---------------7-3279
007-3279
007-3279
087-3279
087-3279
087-0279
087-0279
0000000
0000000
0001000
0001000
//输出结果 (结尾有一空行)
000-0000 2
000-1000 2
007-3279 3
087-0279 2
087-3279 2
310-1010 2
487-3279 3
888-4567 3
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator