UVa 10189 - Minesweeper
来源:互联网 发布:2016年淘宝卖家数量 编辑:程序博客网 时间:2024/04/26 10:18
The Problem
Have you ever played Minesweeper? It's a cute little game which comes within a certain Operating System which name we can't really remember. Well, the goal of the game is to find where are all the mines within a MxN field. To help you, the game shows a number in a square which tells you how many mines there are adjacent to that square. For instance, supose the following 4x4 field with 2 mines (which are represented by an * character):
*........*......If we would represent the same field placing the hint numbers described above, we would end up with:
*10022101*101110As you may have already noticed, each square may have at most 8 adjacent squares.
The Input
The input will consist of an arbitrary number of fields. The first line of each field contains two integers n and m (0 < n,m <= 100) which stands for the number of lines and columns of the field respectively. The next n lines contains exactly m characters and represent the field. Each safe square is represented by an "." character (without the quotes) and each mine square is represented by an "*" character (also without the quotes). The first field line where n = m = 0 represents the end of input and should not be processed.
The Output
For each field, you must print the following message in a line alone:
Field #x:Where x stands for the number of the field (starting from 1). The next n lines should contain the field with the "." characters replaced by the number of adjacent mines to that square. There must be an empty line between field outputs.
Analysis
This problem is quite straigtforward. The problem size is small enough for me to simply store the whole field in char array. Then, I just need to look for all the mines in the field and update their surrounding hint numbers by +1.Okay, just read the simple code below and you will know it.
// 10189 - Minesweeper#include <iostream>using namespace std;int main(){int n; // number of linesint m; // number of columnsint num = 1; // number of fieldchar field[110][110]; // 0 < n,m <= 100while( cin >> n >> m ){if( n==0 && m==0 ) break;// input and initializefor( int i=0; i<n; i++ ){cin >> field[i];for( int j=0; j<m; j++ ){if( field[i][j] == '.' )field[i][j] = '0'; // set all hint number to 0}}for( int i=0; i<n; i++ ){for( int j=0; j<m; j++ ){if( field[i][j] == '*' ) // update the hint numbers around the mine{for( int y=i-1; y<=i+1; y++ ){if( y<0 ) continue; // this row does not existif( y>=n ) break; // this row does not existfor( int x=j-1; x<=j+1; x++ ){if( x<0 || field[y][x]=='*' ) continue; // jump to next columnif( x>=m ) break; // jump to next rowfield[y][x]++; // update the hint number}}}}}if( num != 1 ) cout << endl;cout << "Field #" << num << ":" << endl;for( int i=0; i<n; i++ ){cout << field[i] << endl;}num++;}return 0;}
- Uva 10189 - Minesweeper
- uva 10189 - Minesweeper
- UVa 10189 - Minesweeper
- uva 10189 - Minesweeper
- uva 10189 Minesweeper
- UVa 10189 Minesweeper (模拟)
- UVa 10189 Minesweeper
- UVa 10189 Minesweeper
- UVa 10189 - Minesweeper
- uva Minesweeper 10189
- uva 10189 Minesweeper
- UVA 10189 Minesweeper
- UVA 10189 -Minesweeper
- UVa Problem Solution: 10189 - Minesweeper
- UVA 10189 - Minesweeper(扫雷)
- UVA 10189 - Minesweeper(扫雷)
- Uva 10189 Minesweeper 扫雷游戏
- uva minesweeper
- C#的数据类型
- lnmp源码安装的linux历史操作记录
- sizeof 和strlen的区别于联系
- 卡特兰数catalan
- 支持向量机通俗导论(理解SVM的三层境界)
- UVa 10189 - Minesweeper
- brew安装mysql ,最后ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents 这句什么意思?
- web项目启动时,执行某个方法
- 矩阵相加的算法(存储结构为三元组表)
- Dreamhost 提示No input file specified. 的解决办法
- 从Java到C++——union的用法
- 一些数组的算法题
- Binary Tree Preorder Traversal -先序遍历
- spoj7258 Lexicographical Substring Search(SUBLEX) 后缀自动机