| ||||||||||
| 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 | |||||||||
这么好的程序都超时。。。。我没办法了//http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1002
#include <stdio.h>
#include <string>
const int NUMOFLETTERS = 20;
char out[NUMOFLETTERS];
struct sstr
{
char str[NUMOFLETTERS];
int n;
sstr* next;
};
void Str2Num(char* str_in)
{
char *p1 = str_in;
int p2 = 0;
while (*p1)
{
if (p2 == 3)
{
out[p2++] = '-';
continue;
}
if (*p1 >= '0' && *p1 <= '9') out[p2++] = *p1;
else if (*p1 >= 'A' && *p1 < 'Q') out[p2++] = (*p1 - 65)/3 + 50;
else if (*p1 > 'Q' && *p1 < 'Z') out[p2++] = (*p1 - 66)/3 + 50;
p1++;
}
}
void main()
{
int NumOfTel;
int i;
int count = 0;
bool f = true;
sstr *head = NULL, *cur = NULL, *pre = NULL, *node = NULL;
scanf("%d", &NumOfTel);
head = new sstr;
scanf("%s", head->str);
Str2Num(head->str);
strcpy(head->str, out);
head->n = 1;
head->next = NULL;
for (i = 1; i < NumOfTel; i++)
{
node = new sstr;
scanf("%s", node->str);
Str2Num(node->str);
strcpy(node->str, out);
node->next = NULL;
pre = NULL;
cur = head;
while (cur && strcmp(node->str, cur->str) >= 0)
{
pre = cur;
cur = cur->next;
}
if (!pre)
{
node->next = head;
head = node;
}
else
{
pre->next = node;
node->next = cur;
}
if (pre && !strcmp(pre->str, node->str)) node->n = pre->n+1;
else node->n = 1;
}
cur = head;
while (cur)
{
if (cur->n > 1 && (!cur->next || cur->next->n < cur->n))
{
printf("%s %d\n", cur->str, cur->n);
f = false;
}
pre = cur;
cur = cur->next;
delete pre;
}
if (f) printf("No duplicates.\n");
}
哪位大侠能指出我程序的缺点,请不吝赐教!
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator