解题思路:
检测每一个字符周围八个字符是否存在地雷,考虑到字符四个角落及四条边存在限制,因此在四个角落及四条边外面在套上另外一层空字符串,使得每一个输入的字符串都存在八个领字符串。
注意事项:
参考代码:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int a, b;
int num = 1;
while (cin >> a >> b)
{
if (a == 0 && b == 0)
break;
string* s = new string[a];
for (int i = 0; i < a; i++)
{
cin >> s[i];
}
cout << "Field #" << num << ":" << endl;
string* str = new string[a + 2];
string s1 = "";
for (int i = 0; i < b+2; i++)
{
s1 += '0';
}
string s2 = s1;
str[0] = s1;
str[a + 1] = s2;
for (int i = 0; i < a; i++)
{
str[i + 1] ='0'+ s[i]+'0';
}
for (int y = 1; y < a + 1; y++)
{
for (int x = 1; x < b + 1; x++)
{
if (str[y][x] == '*')
{
cout << '*';
continue;
}
else
{
int c = 0;
if (str[y - 1][x - 1] == '*')
c++;
if (str[y - 1][x] == '*')
c++;
if (str[y - 1][x + 1] == '*')
c++;
if (str[y][x - 1] == '*')
c++;
if (str[y][x + 1] == '*')
c++;
if (str[y + 1][x - 1] == '*')
c++;
if (str[y + 1][x] == '*')
c++;
if (str[y + 1][x + 1] == '*')
c++;
cout << c;
}
}
cout << endl;
}
num++;
cout << endl;
}
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复