poj 2612 Mine Sweeper

来源:互联网 发布:js判断邮箱格式 编辑:程序博客网 时间:2024/05/21 06:38

题目来源:http://poj.org/problem?id=2612

模拟,注意理解题目!输出时已经点开的位置也要标记处雷的数目!理解错了,害的WA两次了!

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 11;bool IsCanGo(int x, int y, int n){    if(x < 0 || x >= n || y < 0 || y >= n)        return false;    return true;}int main(){    char Graph1[MAXN][MAXN], Graph2[MAXN][MAXN], Graph3[MAXN][MAXN];    int n, i, j, k, x, y, num;    bool flag;    int dir[8][2] = {{-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}};    while(~scanf("%d", &n))    {        flag = false;        memset(Graph1, 0, sizeof(Graph1));        memset(Graph2, 0, sizeof(Graph2));        for(i = 0; i < n; ++i)        {            for(j = 0; j < n; ++j)            {                Graph3[i][j] = '.';            }        }        for(i = 0; i < n; ++i)            scanf("%s", Graph1[i]);        for(i = 0; i < n; ++i)            scanf("%s", Graph2[i]);        for(i = 0; i < n; ++i)        {            for(j = 0; j < n; ++j)            {                if(Graph2[i][j] == 'x' && Graph1[i][j] == '*')//这个地方一定要注意,走过的也要标记出雷的数目,理解错了,走过的也打成'.'了,wa死了!                    flag = true;                if(Graph2[i][j] == 'x' && Graph1[i][j] == '.')                {                    num = 0;                    for(k = 0; k < 8; ++k)                    {                        x = i + dir[k][0];                        y = j + dir[k][1];                        if(IsCanGo(x, y, n) && Graph1[x][y] == '*')                            num++;                    }                    Graph3[i][j] = num + '0';                }            }        }        if(flag)        {            for(i = 0; i < n; ++i)            {                for(j = 0; j < n; ++j)                {                    if(Graph2[i][j] == 'x' && Graph1[i][j] != '*')                        printf("%c", Graph3[i][j]);                    else if(Graph1[i][j] == '*')                        printf("*");                    else printf(".");                }                printf("\n");            }        }        else        {            for(i = 0; i < n; ++i)            {                for(j = 0; j < n; ++j)                    printf("%c", Graph3[i][j]);                printf("\n");            }        }    }    return 0;}


0 0
原创粉丝点击