POJ3349

来源:互联网 发布:淘宝红酒面膜 编辑:程序博客网 时间:2024/05/16 19:12
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>


#define mod 1313


using namespace std;


struct node
{
    int len[10];
};


bool cmp(node &a,node &b)
{
 int start[6],i,j,num=0;
 for(i=0;i<6;i++)
  if(a.len[0]==b.len[i])
  {
    start[num++]=i;//记录每一个与a.len[0]相同的元素的位置;
  }
  bool flag;
 for(i=0;i<num;i++)
 {
  flag=true;
  for(j=1;j<6;j++)
   if(a.len[j]!=b.len[(start[i]+j)%6])
   {
    flag=false;
    break;
   }
  if(flag)
   return true ;
  flag=true;


  for(j=1;j<6;j++)
   if(a.len[j]!=b.len[(start[i]-j+6)%6])//逆时针/
   {
    flag=false;
    break;
   }
  if(flag)
   return true;
 }
 return false;
}
int main()
{
    int n,i,j,k;
    int a = 0, l = 0;
    while(scanf("%d",&n)!=EOF)
    {
        vector<node>snow[mod + 1];
        node snownow;


        bool flag = false;
        int cnt = 0;


        for( i = 0; i<n; i++)
       {
         int ans = 0;
         int sum = 0;


         for(  j = 0; j < 6; j++)
         {
           scanf("%d",&snownow.len[j]);
            sum += snownow.len[j];
         }


         ans = sum%mod;
         if(!flag)
         {
              for(k = 0; k < snow[ans].size() ; k++)
                if( cmp(snow[ans][k],snownow))
                 {
                     flag = true;
                      break;
                 }


          }
          if(!flag)
           snow[ans].push_back(snownow);
        }
       if(flag)
       printf("Twin snowflakes found.\n");
    else
       printf("No two snowflakes are alike.\n");
    }


    return 0;
}
0 0
原创粉丝点击