俩哈希题解
2025-05-11 12:38:06
发布于:北京
4阅读
0回复
0点赞
这题读懂之后还挺简单的:
#include <bits/stdc++.h>
using namespace std;
int n, a[256], ha[10000009];
char s[1009];
vector <int> ans;
int main(){
a['A']=a['B']=a['C']=2;
for(int i=0;i<=9;i++)
a[i+'0']=i;
for(int i='D';i<='Z';i++)
a[i]=a[i-3]+1;
a['S']=7;
a['V']=8;
a['Y']=9;
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%s", s);
int x = 0;
for(int j = 0; j < s[j];j++){
if(s[j] != '-'){
x *= 10;
x += a[s[j]];
}
}
if(ha[x]++ == 1){
ans.push_back(x);
}
}
if(ans.empty()){
printf("No duplicates.");
return 0;
}
sort(ans.begin(), ans.end());
for(int i = 0; i < ans.size(); i++){
printf("%03d-%04d %d", ans[i]/10000, ans[i] %10000, ha[ans[i]]);
if(i != ans.size() - 1) printf("\n");
}
return 0;
}
这里空空如也
有帮助,赞一个