| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
天哪。。。。。。为什么老RE阿。。。help me...#include<iostream>
#include<algorithm>
using namespace std;
int num[1000];
struct node
{
int a[6];
node *next;
};
node *snow[1000];
bool match(node *a,node *b)
{
int i,j,k;
for( i = 0; i < 6; i ++ )
{
if( a->a[0] == b->a[i] )
{
for( j = 0, k = i; j < 6; j ++ )
{ if( a->a[j] != b->a[k] )
break;
k ++;
if ( k >= 6 ) k %= 6;
}
if( j == 6 ) return true;
for( j = 0, k = i; j < 6; j ++ )
{
if( a->a[j] != b->a[k] )
break;
k --;
if( k < 0 )
k = 5;
}
if( j == 6 ) return true;
}
}
return false;
}
int main()
{
int i;
bool flag;
int n;
while(scanf("%d",&n)>0)
{
memset(num,0,sizeof num);
memset(snow,NULL,sizeof snow);
flag=0;
int nn[6];
while(n--)
{
scanf("%d%d%d%d%d%d",&nn[0],&nn[1],&nn[2],&nn[3],&nn[4],&nn[5]);
if(!flag)
{
int tmp=(nn[0]+nn[1]+nn[2]+nn[3]+nn[4]+nn[5])%100000;
num[tmp]++;
node *q=new node;
for(i=0;i<6;i++) q->a[i]=nn[i];
q->next =NULL;
node *p=snow[tmp];
if(p!=NULL)
{
while(1)
{
flag=match(p,q);
if(flag) break;
if(p->next!=NULL) p=p->next;
else break;
}
p->next=q;
}
else snow[tmp]=q;
}
}
if(flag) printf("Twin snowflakes found.\n");
else printf("No two snowflakes are alike.\n");
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator