UVA 10189 - Minesweeper(扫雷)

来源:互联网 发布:网络项目 编辑:程序博客网 时间:2024/04/24 05:06
////  main.cpp//  PC_test////  Created by liuyuhan on 17/2/20.//  Copyright (c) 2017年 liuyuhan. All rights reserved.///* scan every node of the field, when the node is *, let the corresponding place of number metrice plus 1 output the metrice, then*/#include <iostream>#include <string.h>using namespace std;void plus_one(int i, int j, int met [][101], int n, int m){    if (i >= 0 && i < n && j >= 0 && j < m)    {        if (met[i][j] != -1)            met[i][j] ++;    }}int main(int argc, const char * argv[]) {    int n, m; // the row and column number of the field    //char f[101][101]; // the field    char c; // the char of the field    int met[101][101]; // the output metrice    int i, j; // the iterate number of row and column    int qn = 1; // question number        while(cin >> n >> m) {        if (n == 0 || m == 0)            break;        getchar();        memset(met, 0, sizeof(met));                for ( i = 0; i < n; i ++) {            for ( j = 0; j < m; j ++)            {                cin >> c;                if (c == '*')                {                    met[i][j] = -1;                    plus_one(i - 1, j - 1, met, n, m);                    plus_one(i - 1, j + 1, met, n, m);                    plus_one(i + 1, j - 1, met, n, m);                    plus_one(i + 1, j + 1, met, n, m);                                        plus_one(i, j - 1, met, n, m);                    plus_one(i, j + 1, met, n, m);                    plus_one(i - 1, j, met, n, m);                    plus_one(i + 1, j, met, n, m);                }            }            getchar();        }        if (qn > 1)            cout << endl;        cout << "Field #" << qn << ":" << endl;        qn ++;        for ( i = 0; i < n; i++)        {            for (j = 0; j < m; j++)            {                if (met[i][j] == -1)                    cout << "*";                else                    cout << met[i][j];            }                        cout << endl;        }        }    return 0;}

0 0