没搞懂哪里错了
查看原帖
没搞懂哪里错了
1161545
_XSOI_楼主2023/10/22 19:52
#include <iostream>
using namespace std;
char map[510][510];  //生成的地图
int  vis[510][510]; //标记用水淹没的地方
int dx[5] = {0, 0, 1, -1}, dy[5] = {1, -1, 0, 0};
int n, m;
void dfs(int x, int y) {
	if (x < 0 or y < 0 or x > n + 1 or y > m + 1 or vis[x][y] != 0) {
		return ; //边界
	}
	vis[x][y] = 2;
	for (int i = 0; i < 4; i ++) {
		int n_dx = x + dx[i];
		int n_dy = y + dy[i];
		dfs(n_dx, n_dy);
	}
	return ;
}
int main() {
	cin >> n >> m;
	for (int i = 1; i <= n; i ++) {
		for (int j = 1; j <= m; j ++) {
			cin >> map[i][j];
		}
	}
//	for (int i = 1; i <= n; i ++) { 用来检查的
//		for (int j = 1; j <= m; j ++) {
//			cout << vis[i][j];
//		}
//		cout<<endl;
//	}
	dfs(0, 0);
	int sum = 0;
	for (int i = 1; i <= n; i ++) {
		for (int j = 1; j <= m; j ++) {
			if (vis[i][j] == 0) {
				sum ++;
			}
		}
	}
	cout << sum;
	return 0;
}

我太蒟蒻了

2023/10/22 19:52
加载中...