zoukankan      html  css  js  c++  java
  • 雪花

    【题目描述】

    你可能听说过没有两片相同雪花。你的任务是编写一个程序来确定这是否为真。你的程序将读取收集的雪花的信息,并寻找一对相同的雪花。每个雪花有6个枝干,对于每片雪花,将会给出其每个枝干的长度。询问是否存在一对枝干相同的雪花。

    【输入描述】

    输入的第一行包含1个整数n(0 < n <= 100000)表示雪花的数量。后面的n行,每一行都在描述雪花。每个雪花将被描述成6个整数(每个整数大于0小于10000000,表示雪花枝干的长度。枝干的长度可能是顺时针或逆时针排序且起点可能不相同。例如,相同的雪花可以被描述为1 2 3 4 5 65 4 3 2 1 6

    【输出描述】

    如果所有的雪花都是不同的,输出:

    No two snowflakes are alike.

    如果有一对相同的雪花,输出:

    Twin snowflakes found.

    【样例输入】

    2

    1 2 3 4 5 6

    4 3 2 1 6 5

    【样例输出】

    Twin snowflakes found.

     

    真是太暴力了:

    源代码:
    
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    struct Node
    {
        int i[6];
    }Snow[100001];
    int n;
    bool Flag(0);
    bool Rule(Node t1,Node t2)
    {
        for (int a=0;a<6;a++)
        {
            if (t1.i[a]==t2.i[a])
              continue;
            return t1.i[a]<t2.i[a];
        }
        return Flag=1;
    }
    int main()
    {
        scanf("%d",&n);
        for (int a=0;a<n;a++)
        {
            for (int b=0;b<6;b++)
              scanf("%d",&Snow[a].i[b]);
            sort(Snow[a].i,Snow[a].i+6);
        }
        sort(Snow,Snow+n,Rule);
        if (Flag)
          printf("Twin snowflakes found.
    ");
        else
          printf("No two snowflakes are alike.
    ");
        return 0;
    }

     

    源代码:
    
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    struct Node
    {
        int Floor[6];
    };
    int i[15000];
    Node Snow[15000][100];
    bool Solve(Node t1,Node t2)
    {
        sort(t1.Floor,t1.Floor+6);
        sort(t2.Floor,t2.Floor+6);
        for (int a=0;a<6;a++)
          if (t1.Floor[a]!=t2.Floor[a])
            return false;
        return true;
    }
    int main()
    {
        int n;
        while (~scanf("%d",&n))
        {
            memset(i,0,sizeof(i));
            bool t=0;
            for (int a=0;a<n;a++)
            {
                int num=0;
                Node T;
                for (int b=0;b<6;b++)
                {
                    scanf("%d",&T.Floor[b]);
                    num=(num+T.Floor[b])%14997;
                }
                if (!t)
                {
                    for (int b=0;b<i[num];b++)
                    {
                        if (Solve(T,Snow[num][b]))
                        {
                            t=true;
                            break;
                        }
                    }
                    Snow[num][i[num]]=T;
                    i[num]++;
                }
            }
            if (t)
                printf("Twin snowflakes found.
    ");
            else
                printf("No two snowflakes are alike.
    ");
        }
        return 0;
    }

     

  • 相关阅读:
    简化窗口的控制和异常处理的复杂性
    集合运算 字典排序 按值 按键
    单条insert
    Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=
    反黑
    curl HTTP_USER_AGENT
    location.replace
    提升600百万数据的处理速度 禁止图片下载
    https://security.stackexchange.com/questions/68405/what-is-tmunblock-cgi-and-can-it-be-exploited-by-shellshock-linux-apache-w
    逻辑分离
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5765669.html
Copyright © 2011-2022 走看看