蓝桥杯 1.扫雷游戏 知识点:搜索

83 阅读1分钟

题目:1.扫雷游戏 - 蓝桥云课 (lanqiao.cn)

x坐标从 y轴负半轴开始逆时针走。

y左边从 x轴正半轴开始顺时针走。

image.png

code

#include<iostream>
using namespace std;
int n, m;
char a[105][105];

int dx[8] = { 0,1,1,1,0,-1,-1,-1 };
int dy[8] = { 1,1,0,-1,-1,-1,0,1 };

void bfs()
{
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			int sum = 0;
			if (a[i][j] == '?')
			{
				for (int k = 0; k <= 7; k++)
				{
					int tempx = i + dx[k];
					int tempy = j + dy[k];

					if (tempx < 0 || tempx >= n || tempy < 0 || tempy >= m || a[tempx][tempy] == '?')continue;

					if (a[tempx][tempy] == '*')
					{
						sum++;
					}
				}
				a[i][j] = char(sum + '0');
			}


		}
	}

}
int main()
{
	cin >> n >> m;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			cin >> a[i][j];
		}
	}
	bfs();

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			cout << a[i][j];
		}
		cout << endl;
	}

	return 0;
}