P10467 [CCC 2007] Snowflake Snow Snowflakes
nightwatch.ryan · · 题解
思路
我们可以用 vector 和 map 来解决这道题目。
每次读入 vector 中并排序,然后用 map 判断之前有没有出现过,如果出现过,那么输出 Twin snowflakes found.,并且结束程序,如果没有,将它设为出现过。如果到了最后没有一片雪花是相同的,那么输出 No two snowflakes are alike.。
代码
#include<map>
#include<set>
#include<vector>
#include<iostream>
#include<algorithm>
std::map<std::vector<int>,bool>mp;
int main(){
std::ios::sync_with_stdio(0);
int n;
std::cin>>n;
for(int i=1;i<=n;i++){
std::vector<int>s;
for(int j=1;j<=6;j++){
int x;std::cin>>x;
s.push_back(x);
}
std::sort(s.begin(),s.end());
if(mp[s]){
std::cout<<"Twin snowflakes found.";
return 0;
}else{
mp[s]=true;
}
}
std::cout<<"No two snowflakes are alike.";
}