P2670扫雷游戏疑问
  • 板块灌水区
  • 楼主Vrandy
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/5/6 15:53
  • 上次更新2023/10/28 02:03:11
查看原帖
P2670扫雷游戏疑问
635303
Vrandy楼主2022/5/6 15:53

用模拟的思路做的,在加数据的过程中没有判断是否越界,但我觉得最后输出的时候的范围是确定的,前边就算加的时候越界了,也不会影响输出,但是测试的时候会出问题,好奇怪,问题在哪捏

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int main()
{
	int n = 0, m = 0;
	
	char land [100][100] = { 0 };
	memset(land, 0, sizeof(land));
	cin >> n >> m;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			cin >> land[i][j];
		}
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			if (land[i][j] == '*')//如果是地雷,就在附近八个格子都加一
			{
				land[i + 1][j + 1]++;
				land[i + 1][j - 1]++;
				land[i + 1][j]++;
				land[i][j + 1]++;
				land[i][j - 1]++;
				land[i - 1][j]++;
				land[i - 1][j + 1]++;
				land[i - 1][j - 1]++;
			}
		}
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			if (land[i][j] == '*')
				cout << land[i][j];
			else
				cout << int(land[i][j]-'?');
		}
		cout << endl;
	}
}

测试用例

10 10
?**?*?????
?**?*?**?*
**?**??***
*???***?*?
****?????*
*???****?*
????**?***
**?**?*?*?
**??***?**
?*??*?*??*

2**4*32221
4**6*4**5*
**4**65***
*655***4*4
****56544*
*434****6*
3324**6***
**3**7*6*5
**44***5**
3*22*5*33*

2022/5/6 15:53
加载中...