P6331 [COCI2007-2008#1] PEG 题解

· · 题解

思路

对于棋子的移动,有这四种移动方法

1:oo.   2:.oo   3:o   4:.
                  o     o
                  .     o

根据移动方式模拟即可。

代码入下

#include <bits/stdc++.h>

// #define int long long
#define rep(i, l, r) for(int i = l; i <= r; ++ i)

using namespace std;

const int MAXN = 7;

char a[MAXN][MAXN];
int ans;

main()
{
    rep(i, 0, 6)
        gets(a[i]);
    rep(i, 0, 6)
        rep(j, 0, 6)
        {
            if(i + 2 < 7 && a[i][j] == 'o' && a[i + 1][j] == 'o' && a[i + 2][j] == '.') //下面 
                ++ ans;
            if(i - 2 >= 0 && a[i][j] == 'o' && a[i - 1][j] == 'o' && a[i - 2][j] == '.')//上面 
                ++ ans; 
            if(j + 2 < 7 && a[i][j] == 'o' && a[i][j + 1] == 'o' && a[i][j + 2] == '.') //右面 
                ++ ans;
            if(j - 2 >= 0 && a[i][j] == 'o' && a[i][j - 1] == 'o' && a[i][j - 2] == '.')//左面 
                ++ ans;
        }

    cout << ans;
    return 0;
}