zoukankan      html  css  js  c++  java
  • 2017CCSP-01 五子棋 简单模拟

    题面和数据

    对于每个空格,先定义一个变量cnt=0,表示空格填充后对五子数量的变化,四个方向进行两边搜索,设对于每个方向连续的白棋子分别为(wa),(wb),有以下几种情况.

    • (wa>=5 &&wb>=5) 填空后cnt--
    • (wa,wb)只有一个大于等于5,填空后cnt不变
    • (wa,wb)都小于5,且(wa+wb>=4),填空后cnt++

    四个方向都判断之后,如果cnt>=0,那么输出该点即可.

    出了一个小错误

    while(inband(ti,tj)==true&&a[ti][tj ]='w')
    ti和tj有可能是负的,再访问下标就会出错,可以把判断是不是放进while循环里.

    int dx[]={1,1,0,1};
    int dy[]={1,0,1,-1};
    int n;
    bool inband(int x,int y)
    {
        return x>=0&&y>=0&&x<=n-1&&y<=n-1;
    }
    string a[45];
    
    int ans[2000];
    int cur=0;
    int main()
    {
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
        }
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(a[i][j]!='*')continue;
                int cnt=0;
                for(int k=0;k<=3;k++)
                {
                    int wa=0,wb=0;
                    int ti=i+dx[k];
                    int tj=j+dy[k];
                    while(inband(ti,tj)==true)
                    {
    
                        if(a[ti][tj]!='w')break;///panduan
                        wa++;
                        ti+=dx[k];
                        tj+=dy[k];
                    }
                    ti=i-dx[k];
                    tj=j-dy[k];
    
                    while(inband(ti,tj)==true)
                    {
                        if(a[ti][tj]!='w')break;
                        wb++;
                        ti-=dx[k];
                        tj-=dy[k];
                    }
                    if(wa>=5&&wb>=5)
                    {
                        cnt--;
                        continue;
                    }
                    if(wa>=5||wb>=5)
                    {
                        continue;
                    }
                    else if(wa+wb>=4)
                    {
                        cnt++;
                    }
                }
                if(cnt>0)
                {
                    printf("%d %d
    ",j,i);
                }
            }
        }
        return 0;
    }
    
    
  • 相关阅读:
    C++-struct类的新特性当class用
    rbenv、fish 與 VSCode 設置之路
    angularJS进阶阶段(4)
    插入排序
    Vimium
    Design Patterns 25
    Mysql(或者sqlite), Mongo中update Column + 1
    Hexo
    继承
    Gradle的依赖方式——Lombok在Gradle中的正确配置姿势
  • 原文地址:https://www.cnblogs.com/Tony100K/p/11622165.html
Copyright © 2011-2022 走看看