POJ 1002 487-3279(map)

来源:互联网 发布:newman 网络引论 编辑:程序博客网 时间:2024/06/07 03:31

题目链接:传送门
用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 110char 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 0
原创粉丝点击