洛谷 扫雷游戏

来源:互联网 发布:日本人彻底疯了 知乎 编辑:程序博客网 时间:2024/06/08 07:50

这道题目是我随机跳题调到的,非常的水。二维前缀和瞎搞搞就AC了。

代码:

#include <iostream>
#include <cstdio>
using namespace std;


const int dx[8] = {1,-1,1,1,-1,-1,0,0},
          dy[8] = {0,0,1,-1,1,-1,-1,1};
int n,m;
char a[110][110];


bool isValid(int x,int y)
{
    if (x >= 1 && x <= n && y >= 1 && y <= m && a[x][y] == '*' )
        return true;
    return false;
}


int Search(int x,int y)
{
    int ans = 0;
    for (int i=0;i<8;++i)
        {
            int new_x = x + dx[i];
            int new_y = y + dy[i];
            if (isValid(new_x,new_y))
                ans ++;
        }
    return ans;
}


int main()
{


    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
         for (int j=1;j<=m;++j)
               cin >> a[i][j];
    
    for (int i=1;i<=n;++i)
        for (int j=1;j<=m;++j)
            {
                if (a[i][j] == '*')
                    cout << '*';
                if (a[i][j] == '?')
                    cout << Search(i,j);
                if (j == m)
                    cout << endl;
            }
    return 0;
}



话说noip普及组的题目这么水吗。。。