一、扫雷(题目在代码源程序里)
1、 循环依次查看每个点周围有的八个点当中,多少个是雷。
2、 判断点为雷,count加1
3、修改对应矩阵的值
/*
扫雷游戏(难度系数:3)
(输入文件:mine.txt,输出文件:estdout.pc2)
玩过扫雷游的朋友都知道,该游戏的目标是找出一个n*m矩阵内的所有的地雷,在本题中,你需要为每一个单元格统计出它周围地雷的个数,每个单元格最多有8个相邻单元格,如下图,4*4 的格子里,用"*"表示雷,用"^" 表示没有雷。
*^^^
^^^^
^*^^
^^^^
计算后的输出结果为:
*100
2210
1*10
1110
输入数据:
文件内包含若干个矩阵,对于每一个矩阵,第一行包含两个数M和N,分别表示该矩阵的行数和列数(0<N,M<100),接下来N行包含M个字符,就是该矩阵,用"*"表示地雷,用"^"表示空白。当N=M=0时,表示文件结束,不用处理该行,
输出数据:
对于每一个矩阵,首先在单独一行打印出矩阵序号:Field #X: 其中X是矩阵的编号,从1开始编号,接下来N行中,读入的"^"用该位置周围的地雷数目所代替,地雷处,仍用"*"表示。输出相邻的两个矩阵之间,空一行。
样例输入:
Mine.txt:
4 4
*^^^
^^^^
^*^^
^^^^
8 8
*^^^*^^^
*^****^^
^*^^**^^
^^**^**^
^*^^**^^
*^^^*^^^
^^**^**^
^*^^**^^
0 0
estdout.pc2:
Field #1:
*100
2210
1*10
1110
Field #2:
*324*310
*4****20
2*56**41
23**6**1
2*34**31
*334*531
23**5**1
1*33**31
*/
#include "stdio.h"
#define MAX_SIZE 100
void main()
{
char a[MAX_SIZE][MAX_SIZE], b[MAX_SIZE][MAX_SIZE];
int n, m;
scanf("%d%d", &n, &m);
for(int i=0; i<n; i++)
{
scanf("%s", &a[i]);
}
for(i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
if(a[i][j] == '*')
{
b[i][j] = '*';
}
else
{
int count = 0;
if(i>0 && j>0 && (a[i-1][j-1] == '*'))
count++;
if(i>0 && (a[i-1][j] == '*'))
count++;
if(i>0 && j<m-1 && (a[i-1][j+1] == '*'))
count++;
if(j>0 && (a[i][j-