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

problem 1002,找不出问题在哪,自测数据,显示正确,但poj.org报wrong answer。哪位有空帮忙看下,谢谢!

Posted by prg1986 at 2012-12-19 18:50:34 on Problem 1002 and last updated at 2012-12-19 18:53:26
//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:
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