算法假了 求助
查看原帖
算法假了 求助
536617
AniuKarry楼主2023/7/13 22:54
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int inf = 0x3f3f3f3f;
int a[105][105];
bool b[105][105];

int dx[8] = {1, 0, -1, 0, -1, 1, 1, -1};
int dy[8] = {0, 1, 0, -1, -1, -1, 1, 1};
void dfs(int x, int y) {
	//if(a[i][j]!=-1) return;
	if (a[x][y] == 1)
		return ;
	for (int i = 1; i <= 8; i++) {
		if (a[x + dx[i]][y + dy[i]] == -2)
			continue;
		else if (a[x + dx[i]][y + dy[i]] == 1) {
			a[x][y]++;
		}

	}
	return ;
}
int main() {
	int n, m;
	cin >> n >> m;
	char it;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++) {
			a[i][0] = a[0][j] = -2;
		}
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++) {
			cin >> it;
			if (it == '*') {
				a[i][j] = 1;
				b[i][j] = 1;

			} else
				a[i][j] = 0;
		}

	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++) {
			dfs(i, j);
		}
	for (int i = 1; i <= n; i++) {

		for (int j = 1; j <= m; j++) {
			if (b[i][j])
			{
            	cout << '*';
                continue;
                }
			cout << a[i][j];
		}
		cout << endl;
	}



	return 0;
}
/*
in

out

*/

2023/7/13 22:54
加载中...