32分求助!!!!
  • 板块P1162 填涂颜色
  • 楼主nopic
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/7/19 10:19
  • 上次更新2023/10/27 19:36:27
查看原帖
32分求助!!!!
575755
nopic楼主2022/7/19 10:19
#include<bits/stdc++.h>
using namespace std;
int a[31][31]={0},n,dx[4]={1,-1,0,0},dy[4]={0,0,1,-1},c;
bool b[31][31]={0};
void dfs(int x,int y)
{
	int nx=x,ny=y;
	for(int i=0;i<=3;i++)
	{
		nx=dx[i]+nx,ny=dy[i]+ny;
		if(a[nx][ny]==0&&b[nx][ny]==0&&nx>=1&&nx<=n&&ny>=1&&ny<=n)
		{
			b[nx][ny]=1;
			dfs(nx,ny);
		}
	}
}
int main()
{
	memset(b,0,sizeof(b));
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			scanf("%d",&a[i][j]);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(i==1||j==1||i==n||j==n)
			{
				if(a[i][j]==0)
					dfs(i,j);
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(a[i][j]==0)
			{
				if(b[i][j]==1)
					printf("0 ");
				else
					printf("2 ");
			}
			else
				printf("1 ");
		}
		printf("\n");
	}
	return 0;
}

哪里错了?

2022/7/19 10:19
加载中...