POJ 1002 487-3279
Posted pcdl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 1002 487-3279相关的知识,希望对你有一定的参考价值。
487-3279
思路:看到这个题,我们可以把它分成两个部分,第一个部分是将数据变为电话号码,第二部分是找出出现次数大于1的电话号码,并且输出。其实,分为两个部分后就不难了,第一部分通过一个函数进行转化,第二部分,利用map容器进行统计。
代码:
#include<iostream> #include<map> using namespace std; char str[1001]; int sum = 0; int fun(){ int i, k = 0; sum = 0; for (i = 0; k < 7; i++){ if (str[i] >= ‘0‘&&str[i] <= ‘9‘){ sum = sum * 10 + str[i] - ‘0‘; k++; } if (str[i] >= ‘A‘&&str[i] <= ‘Z‘){ sum = sum * 10 + ((str[i] - ‘A‘ - (str[i]>‘Q‘)) / 3 + 2); k++; } } return sum; } int main(){ map<int, int>m; int n; cin >> n; getchar(); for (int i = 0; i < n; i++){ gets(str); m[fun()]++; } bool flag = false; map<int, int>::iterator it; for (it = m.begin(); it != m.end(); it++){ if (it->second>1){ printf("%03d-%04d %d ", it->first / 10000, it->first % 10000, it->second); flag = true; } } if (!flag){ printf("No duplicates. "); } system("pause"); return 0; }
以上是关于POJ 1002 487-3279的主要内容,如果未能解决你的问题,请参考以下文章