P1162 填涂颜色求助
  • 板块题目总版
  • 楼主fgcjd
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/3/4 12:33
  • 上次更新2023/10/23 23:09:39
查看原帖
P1162 填涂颜色求助
790268
fgcjd楼主2023/3/4 12:33

RE,输出乱七八糟一大堆,有没有大佬帮忙看一下有什么问题

代码写的非常烂,请别喷,谢谢

题目

#include <bits/stdc++.h>
using namespace std;
int a[1010][1010], b[1010][1010];
int d[10][10] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
int n;
bool f = 1;
#define check(x, y) (x <= n && x >= 1 && y <= n && y >= 1)
void dfs(int x, int y, int k){
	a[x][y] = k;
	b[x][y] = 1;
	if (x == 1 || x == n || y == 1 || y == n){
		f = 0;
		return ;
	}
    for (int i = 0; i < 4; i++){
    	int nx = x + d[i][0];
    	int ny = y + d[i][1];
    	if (check(nx, ny) && b[nx][ny] == 0 && a[nx][ny] == 3){
    		dfs(nx, ny, k);
		}
	}
}
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++){
    	for (int j = 1; j <= n; j++){
    		cin >> a[i][j];
    		if (a[i][j] == 0) a[i][j] = 3;
		}
	}
	for (int i = 1; i <= n; i++){
		for (int j = 1; j <= n; j++){
			if (a[i][j] == 3){
				dfs(i, j, 0);
				for (int x = 1; x <= n; x++){
					for (int y = 1; y <= n; y++){
						b[x][y] = 0;
					}
				}
				if (f == 1){
					dfs(i, j, 2);
					break;
				}
				else f = 0;
			}
		}
		if (f == 1) break;
	}
	for (int i = 1; i <= n; i++){
		for (int j = 1; j <= n; i++){
			cout << a[i][j] << "\n";
		}
		cout << endl;
	}
    return 0;
}
2023/3/4 12:33
加载中...