蓝桥杯(C++ 扫雷)

题目: 

 思想:

1、遍历每个点是否有地雷,有地雷则直接返回为9,无地雷则遍历该点的周围八个点,计数一共有多少个地雷,则返回该数。

代码:

#include<iostream>
using namespace std;
int g[110][110];
int dx[] = { -1,-1,0,1,1,1,0,-1 }, dy[] = { 0,1,1,1,0,-1,-1,-1 };
int dfs(int x, int y)
{
	int ans = 0;
	if (g[x][y] == 1) return 9;
	for (int i = 0; i < 8; i++)
		if (g[x + dx[i]][y + dy[i]] == 1)
			ans++;
	return ans;

}
int main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
			cin >> g[i][j];
	
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
			cout << dfs(i, j) << " ";
		cout << endl;
	}

}

猜你喜欢

转载自blog.csdn.net/qq_74156152/article/details/134172037