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;
    }

     

  • 相关阅读:
    加壳技术
    1002 ( A + B Problem II )
    1000 ( A + B Problem )
    1001 ( Sum Problem )
    背单词Delphi版
    覆盖Form.WndProc来响应消息
    覆盖Dispatch响应消息
    美丽人生论坛看贴工具delphi版
    TWebBrowser组件在DELPHI中POST数据和取得网页源文件
    读淘宝商品描述页源码delphi版
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5765669.html
Copyright © 2011-2022 走看看