您的位置:首页 > 其它

POJ 1002 487-3279(map)

2016-11-02 21:56 639 查看
题目链接:传送门

用map 因为里面的数字只有7位,所以可以开map< int,int>省去用< string,int>的写法

其中map的first代表第一个变量,second 代表第二个变量

代码如下:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<map>
using namespace std;
#define N 110
char a
,b
;
int main(){
map<int,int>res;
int T,i,j,n,m;
cin>>n;
int cnt=0;
while(n--){
scanf("%s",a);
long long int cnt1=0;
for(i=0;a[i];i++){
if(a[i]=='-') continue;
if(a[i]=='A'||a[i]=='B'||a[i]=='C') cnt1=cnt1*10+2;
if(a[i]=='D'||a[i]=='E'||a[i]=='F') cnt1=cnt1*10+3;
if(a[i]=='G'||a[i]=='H'||a[i]=='I') cnt1=cnt1*10+4;
if(a[i]=='J'||a[i]=='K'||a[i]=='L') cnt1=cnt1*10+5;
if(a[i]=='M'||a[i]=='N'||a[i]=='O') cnt1=cnt1*10+6;
if(a[i]=='P'||a[i]=='R'||a[i]=='S') cnt1=cnt1*10+7;
if(a[i]=='T'||a[i]=='U'||a[i]=='V') cnt1=cnt1*10+8;
if(a[i]=='W'||a[i]=='X'||a[i]=='Y') cnt1=cnt1*10+9;
if(a[i]<='9'&&a[i]>='0')  cnt1=cnt1*10+a[i]-'0';
}
res[cnt1]++;
}
map<int,int>::iterator it;
for(it=res.begin();it!=res.end();it++)
{
if(it->second>1)
{
cnt++;
printf("%03d-%04d %d\n",it->first/10000,it->first%10000,it->second);
}
}
if(cnt==0)
printf("No duplicates.\n");
return 0;
}


开始肛一波POJ
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  poj