zoukankan      html  css  js  c++  java
  • 小 X 与机器人 2 (sihuo)

    题目:

    时间限制 : 1 Sec
    内存限制 : 32 Mb
    提交 : 439
    解决 : 178

    题目描述

    小 X 在解决了高大上的落子问题后, 开始着手训练 BetaGo 的深度学习 能力, 第一步要教 BetaGo识别各种各样的棋形,小 X 首先教 BetaGo 识别跟死活密切相关的棋型,在成功识别了一些简单的棋形后, BetaGo 在识别聚四棋形时遇到了困难,所谓聚四棋形就是连在一起的四颗棋子, 它们共有五种不同的形状, 五种棋形及其命名如下图所示:
    注意: 每种形状经过旋转、翻折得到的图案属于同一种形状。 譬如只要四颗相邻的棋子排成一条直线则不管它们是横着排还是竖着排都称之为直四。
    小 X 希望你编一个程序帮助 BetaGo 识别聚四棋形, 具体要求是:给出四个连在一起的围棋盘上的交叉点位置, 判断这四颗连在一起的棋子属于那种聚四? 输入数据保证给出的棋形一定是五种聚四棋形中的一种。 棋盘上位置的表示方法与第一题相同。

    输入

    输入数据共有四行,每行包含两个用空格隔开的正整数 x 和 y, 表示棋盘上的一颗棋子的位置。

    输出

    输出一行包含一个字符串, 表示对应的聚四棋形的拼音。
    如果是直四 , 则输出“ zhisi” ; 如果是曲四, 则输出“ qusi” ; 如果是弯四, 则输出“ wansi” ;
    如果是丁四, 则输出“dingsi” ; 如果是方四, 则输出“fangsi” 。 注意引号不要输出。

    样例输入 

    1 1 1 2 2 3 2 2

    样例输出 

    wansi

    【数据范围】
    1≤x≤4, 1≤y≤4,每种棋形分别对应 20% 的数据,也就是说你直接输出某种拼音可以得到 20 分。

    方法:

    1、所输入的x、y分别排序,然后根据规律来输出。(自己观察)

    2、其中,“qusi”和“dingsi”需要通过x、y中重复的个数来判断,“wansi”和“fangsi”也可以用重复次数判断。

    标程:

    #include<bits/stdc++.h>
    using namespace std;
    int x[100],y[100],s1,s2,t;
    int main()
    {
        for (int i=1;i<=4;i++)
        {
            cin>>x[i]>>y[i];
        }
        sort(x+1,x+5);
        sort(y+1,y+5);
        t=1;
        if ((x[1]==x[2])&&(x[3]==x[2])&&(x[3]==x[4])||(y[1]==y[2])&&(y[3]==y[2])&&(y[3]==y[4]))
        {
            cout<<"zhisi"<<endl;
            return 0;
        }
        s1=0;
        s2=0;
        for (int i=1;i<=3;i++)
        {
            for (int j=i+1;j<=4;j++)
            {
                if (x[i]==x[j])s1+=1;
                if (y[i]==y[j])s2+=1;
            }
        }
        if ((s1==2)&&(s2==2))
        {
            cout<<"fangsi"<<endl;
            return 0;
        }
        if (s1==3)
        {
            for (int i=1;i<=3;i++)
            {
                if (y[i]==y[i+1])
                {
                    if (i==2)
                    {
                        cout<<"dingsi"<<endl;
                        return 0;
                    }
                    else
                    {
                        cout<<"qusi"<<endl;
                        return 0;
                    }
                }
            }
        }
        if (s2==3)
        {
            for (int i=1;i<=3;i++)
            {
                if (x[i]==x[i+1])
                {
                    if (i==2)
                    {
                        cout<<"dingsi"<<endl;
                        return 0;
                    }
                    else
                    {
                        cout<<"qusi"<<endl;
                        return 0;
                    }
                }
            }
        }
        if ((s1==1)||(s2==1))
        {
            cout<<"wansi"<<endl;
            return 0;
        }
            return 0;

  • 相关阅读:
    五。java运算符
    二。java的第一个程序
    四。java常量的学习以及数据类型转换
    修改Launcher源码之快速启动
    Eclipse导入Android项目的方法
    js日期时间控件脚本
    Android中的soundpool小结
    Android GPS (当前位置 & GPS信息更新)
    android利用WebView实现浏览器的封装
    Android选项卡置底的方法
  • 原文地址:https://www.cnblogs.com/leonqqs/p/7083346.html
Copyright © 2011-2022 走看看