0
点赞
收藏
分享

微信扫一扫

POJ 1002 487-3279(map)

westfallon 2022-07-15 阅读 69


题目链接:​​传送门​​​
用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[N],b[N];
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


举报

相关推荐

0 条评论