| ||||||||||
| 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 | |||||||||
判断雪花是否相同,其实也不难,翻转和移动 6次 就能判断出来。#include<stdio.h>
#include<algorithm>
using namespace std;
int n;
struct node{
int data[6];
int sum;
};
node A[100000];
bool cmp(node a,node b)
{
if(a.sum<b.sum)
return true;
else
return false;
}
void move(int t[])
{
int temp=t[0];
t[0]=t[1];
t[1]=t[2];
t[2]=t[3];
t[3]=t[4];
t[4]=t[5];
t[5]=temp;
}
void turned(int t[])
{//1---5 swap
int t1=t[1];
t[1]=t[5];
t[5]=t1;
//2----4 swap
int t2=t[2];
t[2]=t[4];
t[4]=t2;
}
bool isthesame(int t1[],int t2[])
{
for(int i=0;i<6;i++)
if(t1[i]!=t2[i])
return false;
return true;
}
bool same(int i,int j)
{
//find min
int temp1[6],temp2[6],temp3[6],temp4[6];
int min_index=0;
for(int k=0;k<6;k++)
{temp3[k]=temp1[k]=A[i].data[k];
temp4[k]=temp2[k]=A[j].data[k];
}
sort(temp1,temp1+6);
sort(temp2,temp2+6);
for(int k=0;k<6;k++)
{
if(temp1[k]!=temp2[k])
return false;
}
//构成的数字都相同
//逐个比较
int cnt=0;
while(cnt<6)
{ if(!isthesame( temp3,temp4))
{ turned(temp3) ;
if(!isthesame( temp3,temp4))
{ turned(temp3) ;
move(temp3);
}
else
return true ;
}
else
return true;
cnt++;
}
return false;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%d%d%d%d%d",&A[i].data[0],&A[i].data[1],&A[i].data[2],&A[i].data[3],&A[i].data[4],&A[i].data[5]);
A[i].sum=A[i].data[0]+A[i].data[1]+A[i].data[2]+A[i].data[3]+A[i].data[4]+A[i].data[5];
}
sort(A,A+n,cmp);
int start=0 ;
while(start<n)
{ int target=A[start].sum;
int end=-1;
for(int i=start;i<n;i++)
{
if(A[i].sum!=target)
{
end=i-1;
break;
}
}
if(end==-1)
end=n-1;//[start,end]有无相同雪花
if(start<end)//2以上
{
for(int j=start;j<end;j++)
{
for(int k=j+1;k<=end;k++)
{
if(same(j,k))
{
printf("Twin snowflakes found.\n");
return 0;
}
}
}
}
start=end+1;
}
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