别搞偷袭


私信TA

用户名:1292453585

访问量:400

签 名:

等  级
排  名 64233
经  验 202
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 南京中医药大学
专  业

  自我简介:

TA的其他文章

解题思路:
首先利用指针数组和new建立二维动态数组存放数据

然后建立一个二维数组,这个二维数组的长度与宽度均比所需的二维数组大2

若我们输入4 4,那么程序会生成6*6的空间,用6*6的空间中最中央的4*4存放我们输入的符号,其余边上的内存均赋值为‘.’

这样在计算一个位置周围8个未知的地雷数是就不必考虑越界问题

如图

若输入* . . .         则生成  . . . . . .

           . . . .                     . * . . . .

           . * . .                    . . . . . .

           .  . . .                    . . * . . .

                                      . . . . . .

注意事项:

题目翻译
你玩过扫雷游戏吗?这个可爱的小游戏带有一个特定的操作系统,我们不记得它的名字了。游戏的目标是找到mxn区域内所有地雷的位置。游戏会在一个方块中显示一个数字,告诉你有多少地雷与这个方块相邻。
每个方块最多有8个相邻方块。左边的4 x 4字段包含两个地雷,每个地雷用一个“*”字符表示。如果我们用上面描述的提示数字表示相同的字段,我们最终会得到右边的字段:....
……
*……1100 210 1*10 1110


输入

将由任意数量的字段组成。每个字段的第一行包含两个整数n和m (0 <n, ms \le$ 100),分别表示该字段的行数和列数。接下来的n行每一行都包含m个字符,代表这个字段。安全方块用"。"表示,我的方块用" * "表示,都不带引号。第一个字段行n = m = 0表示输入的结束,不应该被处理
输出
对于每个字段,只在一行中打印消息字段#x:,其中x代表从1开始的字段编号。接下来的n行应该包含带有。"字符的字段,替换为与该广场相邻的地雷的数量。字段输出之间必须有一个空行


参考代码:

#include <iostream>

using namespace std;


int main()

{

int n, m, i, j, count,f1,f2,flag=1;

char** p=NULL;                                %建立指向char型指针数组的指针

while (cin >> m >> n && m != 0)

{

p = new char* [m+2];                       %建立char型数组

for (i = 0; i < m+2; i++)

p[i] = new char[n+2];

for (i = 0; i < m + 2; i++)

for (j = 0; j < n + 2; j++)

p[i][j] = '.';                                         %为边上的位置赋值‘.’

for (i = 1; i < m+1; i++)

{

for (j = 1; j < n+1; j++)

cin >> p[i][j];                                     %输入所需要的输入的符号

}

cout << "Field #" << flag++ << ":" << endl;

for (i = 1; i < m+1; i++)

{

for (j = 1; j < n+1; j++)

{

count = 0;

if (p[i][j] == '*')                                %检查 若为地雷则输出*

cout << '*';

else

{

for(f1=i-1;f1<=i+1;f1++)

for (f2 = j - 1; f2 <= j + 1; f2++)

{

if (p[f1][f2] == '*')

count++;                                          %检查 若旁边有地雷则加一

}

cout << count;

}

}

cout << endl;

}

cout << endl;

delete[m + 2]p;                               %释放内存

}

return 0;

}




 

0.0分

2 人评分

  评论区

  • «
  • »