2017 计蒜之道 初赛 第一场 A. 阿里的新游戏

2017 计蒜之道 初赛 第一场 A. 阿里的新游戏

时间&空间

1000ms

131072K

题目描述

阿里九游开放平台近日上架了一款新的益智类游戏——成三棋。成三棋是我国非常古老的一个双人棋类游戏,其棋盘如下图所示:

成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋子。我们可以用坐标系来描述棋盘:

如果一条线段上的三个交叉点都被同一玩家的棋子占据的话,则称这条线段被该玩家 成三。现在,小红和小明两人在游戏平台上下棋,其中小红的棋子是黑色的。请你帮小红计算他成三的线段数。

样例对应的棋盘如下:

输入格式

输入第一行两个整数 n,m(3 le n, m le 9)n,m(3≤n,m≤9),nn 表示小红的棋子数,mm 表示小明的棋子数。

接下来 nn 行输入小红的棋子坐标。

接下来 mm 行输入小明的棋子坐标。

输入保证坐标合法,并且棋子之间不重合。

输出格式

输出小红成三的线段数。

样例输入

6 3
-1 0
-2 0
-3 0
-1 -1
-1 1
1 0
0 2
0 3
2 2

样例输出

2

AC代码

#include <iostream>

using namespace std;

int main()
{
    int n,m,sum=0;
    int x,y;
    cin>>n>>m;int a[10][10]={0};
    for(int i=0;i<n;i++)
    {

        cin>>x>>y;
        x+=3;
        y+=3;
        a[x][y]=1;
    }
    for(int i=0;i<m;i++)
        cin>>x>>y;
    if(a[0][0]&&a[3][0]&&a[6][0])
        sum++;
    if(a[1][1]&&a[3][1]&&a[5][1])
        sum++;
    if(a[2][2]&&a[3][2]&&a[4][2])
        sum++;
    if(a[0][3]&&a[1][3]&&a[2][3])
        sum++;
    if(a[4][3]&&a[5][3]&&a[6][3])
        sum++;
    if(a[2][4]&&a[3][4]&&a[4][4])
        sum++;
    if(a[1][5]&&a[3][5]&&a[5][5])
        sum++;
    if(a[0][6]&&a[3][6]&&a[6][6])
        sum++;
    if(a[0][0]&&a[0][3]&&a[0][6])
        sum++;
    if(a[1][1]&&a[1][3]&&a[1][5])
        sum++;
    if(a[2][2]&&a[2][3]&&a[2][4])
        sum++;
    if(a[3][0]&&a[3][1]&&a[3][2])
        sum++;
    if(a[3][4]&&a[3][5]&&a[3][6])
        sum++;
    if(a[4][2]&&a[4][3]&&a[4][4])
        sum++;
    if(a[5][1]&&a[5][3]&&a[5][5])
        sum++;
    if(a[6][0]&&a[6][3]&&a[6][6])
        sum++;
    cout<<sum<<endl;
    return 0;
}

结语

这一题就是一个暴力过的。。。。

发表评论