POJ 1002 487-3279
2015-08-26 15:34
477 查看
问题描述:http://poj.org/problem?id=1002
这道题目阅读起来没什么问题,但是很坑!很坑!很坑!重要的事情说三遍!我已经记不清WA多少次了!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char map[26] = {'2', '2', '2', '3', '3', '3', '4', '4', '4',
'5', '5', '5', '6', '6', '6', '7', '7', '7',
'7', '8', '8', '8', '9', '9', '9', '9'};//按键映射表
char phone[100000][9]; //全部电话号码
int n; //电话号码的数量
char number[80]; //一个未经处理的电话号码
int main(void)
{
int loop; //循环变量
int phone_i=0, phone_j=0; //phone数组的下标
int tag = 0; //重复标志,0没有处于一个重复,1有重复
int count = 1; //重复次数
scanf("%d", &n);
for(phone_i=0; phone_i<n; phone_i++){//格式化所有输入数据为111-1111的形式
scanf("%s", number);
for(loop=0; number[loop]!='\0'; loop++){//检查每一个字符
if(phone_j == 3){//第四个字符必须是'-'
phone[phone_i][phone_j] = '-';
phone_j++;
}
if(number[loop]>='0' && number[loop]<='9'){//当前字符是数字
phone[phone_i][phone_j] = number[loop];
}
else if(number[loop]>='A' && number[loop]<='Z'){//当前字符是大写字母
phone[phone_i][phone_j] = map[number[loop]-'A'];
}
else if(number[loop] == '-'){//忽略'-'
continue;
}
phone_j++;
}
phone_j = 0;
}
//排序全部电话号码
qsort(phone, n, 9, strcmp);
for(loop=1; loop<n; loop++){//检查重复次数,输出结果
if(strcmp(phone[loop], phone[loop-1]) == 0){
tag = 1;
count++;
}
else{//没有重复
if(count > 1){
printf("%s %d\n", phone[loop-1], count);
}
count = 1;
}
}
if(count > 1){//查看最后一条记录是否有重复
printf("%s %d\n", phone[loop-1], count);
}
if(!tag)
printf("No duplicates.\n");
return 0;
}
这道题目阅读起来没什么问题,但是很坑!很坑!很坑!重要的事情说三遍!我已经记不清WA多少次了!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char map[26] = {'2', '2', '2', '3', '3', '3', '4', '4', '4',
'5', '5', '5', '6', '6', '6', '7', '7', '7',
'7', '8', '8', '8', '9', '9', '9', '9'};//按键映射表
char phone[100000][9]; //全部电话号码
int n; //电话号码的数量
char number[80]; //一个未经处理的电话号码
int main(void)
{
int loop; //循环变量
int phone_i=0, phone_j=0; //phone数组的下标
int tag = 0; //重复标志,0没有处于一个重复,1有重复
int count = 1; //重复次数
scanf("%d", &n);
for(phone_i=0; phone_i<n; phone_i++){//格式化所有输入数据为111-1111的形式
scanf("%s", number);
for(loop=0; number[loop]!='\0'; loop++){//检查每一个字符
if(phone_j == 3){//第四个字符必须是'-'
phone[phone_i][phone_j] = '-';
phone_j++;
}
if(number[loop]>='0' && number[loop]<='9'){//当前字符是数字
phone[phone_i][phone_j] = number[loop];
}
else if(number[loop]>='A' && number[loop]<='Z'){//当前字符是大写字母
phone[phone_i][phone_j] = map[number[loop]-'A'];
}
else if(number[loop] == '-'){//忽略'-'
continue;
}
phone_j++;
}
phone_j = 0;
}
//排序全部电话号码
qsort(phone, n, 9, strcmp);
for(loop=1; loop<n; loop++){//检查重复次数,输出结果
if(strcmp(phone[loop], phone[loop-1]) == 0){
tag = 1;
count++;
}
else{//没有重复
if(count > 1){
printf("%s %d\n", phone[loop-1], count);
}
count = 1;
}
}
if(count > 1){//查看最后一条记录是否有重复
printf("%s %d\n", phone[loop-1], count);
}
if(!tag)
printf("No duplicates.\n");
return 0;
}
相关文章推荐
- Ext Chart图表保存为图片
- 【C++】单链表的基本操作
- poj1426 DFS BFS
- PHPExcel浏览器输出Excel2007出错
- js跨域
- Mac实用工具
- (4) php面向对象(OOP)编程完全教程
- 使用纯js写的一个分页
- SharePoint PowerShell命令系列 (11) Remove-SPWeb
- html随笔
- java使用HttpURLConnection和HttpClient分别模拟get和post请求以及操作cookies
- PHP 直接在共享内存中存储数据集
- 操作系统概念之进程
- HDU 4512 吉哥系列故事――完美队形I(最长公共上升子序列)
- (3)PHP 学习笔记进阶篇 from imooc
- Couldn't load weibosdkcore from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/ap
- 进程控制のfork()
- 堆和栈的区别(转过无数次的文章)
- vmware11.1.2里安装hyper-v
- [JQ权威指南]第十二天:使用Jquery事件改变文本框的样式