1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int dx[4]={-1,1,0,0}; int dy[4]={0,0,-1,1}; int n; struct node{int x,y;}a[11100];int len; int Map[110][110]; bool v[110][110],bk; void dfs(int x,int y) { for(int i=0;i<=3;i++) { int xx=x+dx[i], yy=y+dy[i]; if(v[xx][yy]==0&&xx>=1&&xx<=n&&yy>=1&&yy<=n) { if(xx==1 ||xx==n ||yy==1 ||yy==n) bk=0; v[xx][yy]=1; a[++len]=node{xx,yy}; dfs(xx,yy); } } } int main() { scanf("%d", &n); memset(v,0,sizeof(v)); for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d", &Map[i][j]),v[i][j]=Map[i][j]; for(int i=2;i<n;i++) { for(int j=2;j<n;j++) { if(v[i][j]==0) { len=1;a[1]=node{i,j};v[i][j]=1; bk=1;dfs(i,j); if(bk==1) { for(int k=1;k<=len;k++)Map[a[k].x][a[k].y]=2; } } } } for(int i=1;i<=n;i++){ for(int j=1;j<n;j++)printf("%d ",Map[i][j]); printf("%d\n",Map[i][n]); } return 0; }
- 1
信息
- ID
- 688
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 84
- 已通过
- 35
- 上传者