POJ 3349 Snowflake Snow Snowflakes

这是一个水水的水题,排序再查找。

贴代码:

#include <stdio.h>
#include <stdlib.h>
struct node
{
    int a[6];
}snow[100005];
int cmp1(const void *a,const void *b)
{
    return *(int *)a-*(int *)b;
}
int cmp2(const void *a,const void *b)
{
    struct node *c=(struct node *)a;
    struct node *d=(struct node *)b;
    for(int i=0;i<6;i++)
    {
        if(c->a[i]!=d->a[i])
        {
            return c->a[i]-d->a[i];
        }
    }
    return 0;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int i,j,flat=0,s[6];
        for(i=0; i<n; i++)
        {
            for(j=0; j<6; j++)
            {
                scanf("%d",&s[j]);
            }
            qsort(s,6,sizeof(s[0]),cmp1);
            for(j=0;j<6;j++)
            {
                snow[i].a[j]=s[j];
            }
        }
        qsort(snow,n,sizeof(snow[0]),cmp2);
        for(i=0;i<n-1;i++)
        {
            flat=1;
            for(j=0;j<6;j++)
            {
                if(snow[i].a[j]!=snow[i+1].a[j])
                {
                    flat=0;
                    break;
                }
            }
            if(flat)
            {
                break;
            }
        }
        if(flat)
        {
            printf("Twin snowflakes found.\n");
        }
        else
        {
            printf("No two snowflakes are alike.\n");
        }
    }
    return 0;
}


posted @ 2013-08-14 20:39  、小呆  阅读(110)  评论(0编辑  收藏  举报