百练 OJ 2974 487 3279

转载请写上本帖链接:
及【C++奋斗乐园/ACM乐园】

/****************************************
ID: 百练 OJ 2974 487 3279
题目地址: http://poj.pku.edu.cn/problem/2974/
My Name: Tanky_Woo
My Website: C++奋斗乐园|C++学习|算法学习|ACM/ICPC学习
Website Link: http://www.cpply.com/

My BBS: C++奋斗乐园|C++论坛|算法论坛|ACM/ICPC论坛
BBS Link:http://www.cppleyuan.com/

My Blog:www.wutianqi.com
豆瓣小组:http://www.douban.com/group/cppleyuan/
QQ:17611904
QQ群:C++奋斗乐园①群:19333724(满) ②群:23840480 (满)
      ③群:17314377 ④群:23829384
*****************************************/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/****************************************
ID: 百练 OJ 2974 487 3279
题目地址: http://poj.pku.edu.cn/problem/2974/
My Name: Tanky_Woo
My Website: C++奋斗乐园|C++学习|算法学习|ACM/ICPC学习
Website Link: http://www.cpply.com/
 
My BBS: C++奋斗乐园|C++论坛|算法论坛|ACM/ICPC论坛
BBS Link:http://www.cppleyuan.com/
 
My Blog:www.wutianqi.com
豆瓣小组:http://www.douban.com/group/cppleyuan/
QQ:17611904
QQ群:C++奋斗乐园①群:19333724(满) ②群:23840480 (满)
      ③群:17314377 ④群:23829384
*****************************************/
 
#include <iostream>
using namespace std;
 
char map[] = "22233344455566677778889999";
char str[80], telNumbers[100000][9];
 
int Mycompare(const void *e1, const void *e2)
{
	return (strcmp((char*)e1, (char *)e2));
}
 
void standardizeTel(int n){
	int j, k;  //j代表str的第j个元素, k代表
 
telNumbers[][]第telNumbers[n][k]元素
	j = k = -1;
	while(k < 8)
	{
		j++;
		if(str[j] == '-')
			continue;
		k++;
		if(k == 3)
		{
			telNumbers[n][k] = '-';
			k++;
		}
		if(str[j] >= 'A' && str[j] <= 'Z')
		{
			telNumbers[n][k] = map[str[j] - 
 
'A'];
			continue;
		}
		telNumbers[n][k] = str[j];  //数字
	}
	telNumbers[n][k] = 0;
 
}
 
int main()
{
	int nCases, i, j;
	bool noduplicate;
 
	scanf("%d", &nCases);
	for(i = 0; i < nCases; i++)
	{
		scanf("%s", str);
		standardizeTel(i);
	}
 
	qsort(telNumbers, nCases, 9, Mycompare);
 
	noduplicate = true;
	i = 0;
	while(i < nCases)
	{
		j = i;
		i++;
		while(i < nCases && strcmp(telNumbers[i], 
 
telNumbers[j]) == 0)
			i++;
		if(i - j > 1)
		{
			printf("%s %d\n", telNumbers[j] , 
 
i - j);
			noduplicate = false;
		}
 
	}
	if(noduplicate)
		printf("No duplicates.\n");
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

《百练 OJ 2974 487 3279》有1个想法

  1. 我大一的时候,也看一点算法,就是想弄清怎么完全使用IF-else等,这些判断语句。

    你好厉害,做这么多题目,难怪这么不寻常!

发表评论

电子邮件地址不会被公开。 必填项已用*标注