计蒜客 15499 阿里的新游戏 题解

题意
阿里九游开放平台近日上架了一款新的益智类游戏——成三棋。成三棋是我国非常古老的一个双人棋类游戏,成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋子。如果一条线段上的三个交叉点都被同一玩家的棋子占据的话,则称这条线段被该玩家 成三。现在,小红和小明两人在游戏平台上下棋,其中小红的棋子是黑色的。请你帮小红计算他成三的线段数。
思路
存下黑棋的横纵坐标,枚举线段进行判定
代码
#include <cstdio>
int x[9],y[9];
int main()
{
    int n,m,cnt,ans,xx,yy;
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++)
        scanf("%d%d",&x[i],&y[i]);
    ans=0;
    cnt=0;
    for(int i=0;i<n;i++)
        if(x[i]==-3)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(x[i]==-2)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(x[i]==-1)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(x[i]==3)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(x[i]==2)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(x[i]==1)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(y[i]==-3)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(y[i]==-2)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(y[i]==-1)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(y[i]==3)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(y[i]==2)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(y[i]==1)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(x[i]==0&&y[i]<0)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(x[i]==0&&y[i]>0)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(y[i]==0&&x[i]>0)
            cnt++;
    if(cnt==3)
        ans++;
    cnt=0;
    for(int i=0;i<n;i++)
        if(y[i]==0&&x[i]<0)
            cnt++;
    if(cnt==3)
        ans++;
    for(int i=0;i<m;i++)
        scanf("%d%d",&xx,&yy);
    printf("%d\n",ans);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值