判断所有的雪花里面有没有相同的
每次把雪花每个角的值进行相加和相乘 之后hash
#include<iostream> #include<algorithm> #include<cstring> #include<stdio.h> using namespace std; typedef long long LL; ; ,p=; ],head[maxn],nex[maxn]; int he(int *a){ ,mul=; ;j<;j++){ sum=(sum+a[j])%p; mul=1LL*mul*a[j]%p; } return (sum+mul)%p; } bool equa(int *a,int *b){ sort(a,a+); sort(b,b+); ;j<;j++){ ; } ; } bool inse(int *a){ int val=he(a); //cout<<val<<endl; for(int j=head[val];j;j=nex[j]){ if(equa(snow[j],a)){ ; } } ++tot; memcpy(snow[tot],a,*sizeof(int)); nex[tot]=head[val]; head[val]=tot; ; } int main(){ int n; cin>>n; memset(head,-,sizeof(head)); memset(nex,-,sizeof(nex)); ;j<=n;j++){ ]; ;j<;j++){ scanf("%d",&a[j]); } if(inse(a)){ puts("Twin snowflakes found."); ; } } puts("No two snowflakes are alike."); }