POJ 1002--487-3276
来源:互联网 发布:mac pr防抖 编辑:程序博客网 时间:2024/06/18 14:47
题意
题目的意思是,把字母,短线,数字组成的电话号码,换成相应的纯数字号码(中间最后需要加一条短线),再计算有无重复的,没重复的输出”No duplicates.”, 有重复的输出电话号码和重复次数。
分析
简单的来讲有两种思路:
第一是申请长度10000000的整型数组,下标用来存储电话,数组记录重复次数,最后直接输出有重复的号码。
第二是申请长度为100000的数组,数组存储号码,最后排序输出即可。
下面的代码是第二种思路,原因是第一种虽然实现简单,但耗费了很多不必要的空间,而且性能并未提高。排序直接用的库函数sort,所以时间耗费还比较多,有待优化。
Memory: 600K Time: 391MS Length:38LINES
#include<iostream>#include<algorithm>using namespace std;int arrayResult[100000] = { 0 };int main(){ int MapRela[26]; //先对字母和数字做一个映射 MapRela['A' - 65] = 2; MapRela['L' - 65] = 5; MapRela['M' - 65] = 6; MapRela['N' - 65] = 6; MapRela['O' - 65] = 6; MapRela['P' - 65] = 7; MapRela['R' - 65] = 7; MapRela['S' - 65] = 7; MapRela['T' - 65] = 8; MapRela['V' - 65] = 8; MapRela['U' - 65] = 8; MapRela['W' - 65] = 9; MapRela['X' - 65] = 9; MapRela['Y' - 65] = 9; MapRela['B' - 65] = 2; MapRela['C' - 65] = 2; MapRela['D' - 65] = 3; MapRela['E' - 65] = 3; MapRela['F' - 65] = 3; MapRela['G' - 65] = 4; MapRela['H' - 65] = 4; MapRela['I' - 65] = 4; MapRela['J' - 65] = 5; MapRela['K' - 65] = 5; int Amount = 0; fscanf(stdin, "%d", &Amount); //用fscanf和下面的fgets在输入效率上会高一些。 getchar(); //跳过换行符 for (int cnt = 0; cnt < Amount; ++cnt) { char tempnumber[100] = { 0 }; //字符串长度并未告知,所以取大一点 fgets(tempnumber, 100, stdin); int k = 0; for (int i = 0; i < strlen(tempnumber); ++i) { if (tempnumber[i] >= 65) k = k * 10 + MapRela[tempnumber[i] - 65]; else if (tempnumber[i] >= 48) k = k * 10 + tempnumber[i] - 48; } arrayResult[cnt] = k; } sort(arrayResult, arrayResult + Amount); int key = 0; for (int i = 0; i < Amount;) { int count = 1; for (int j = i; j != Amount - 1 && arrayResult[j] == arrayResult[j + 1]; ++j, ++count); if (count > 1 && (key = 1)) printf("%03d-%04d %d\n", arrayResult[i] / 10000, arrayResult[i] % 10000, count); i += count; } if (!key) cout << "No duplicates." << endl; return 0;}
阅读全文
0 0
- POJ 1002--487-3276
- POJ 1002--487-3276
- POJ--1002 487-3279
- POJ 1002 487-3279
- POJ 1002 487-3279
- POJ 1002 487-3279
- poj 1002 "487-3279"
- POJ 1002 487-3279
- poj 1002 487-3279
- poj 1002 487-3279
- POJ-1002 487-3279
- poj 1002 487-3279
- POJ 1002 487-3279
- poj 1002 487-3279
- (POJ 1002) 487-3279
- POJ 1002 487-3279
- POJ 1002 487-3279
- [POJ]1002 487-3279
- 使用python比较两个文件的不同之处
- JS渲染引擎比较HtmlUnit/Selenium/PhantomJs
- matplotlib作图添加表格
- 洛谷 3379_【模板】最近公共祖先(LCA)
- c语言中goto使用注意事项
- POJ 1002--487-3276
- Lua语言基础入门
- 毕业寄语
- 按需加载 AngularJS 的 Controller
- 人脸检测——矫正人脸生成标签
- java中String和StringBuffer的传参与区别
- HTML第二天学习笔记
- 源码安装mongodb
- 27.1.1.3 Spark SQL 中ANTLR4的应用