1 条题解
-
0
大体思路如下:
找到外围0标记成2,全部标记后,剩下的0就是由数字1构成的闭合圈
代码如下(c++)
#include<bits/stdc++.h> using namespace std; int dx[]={-1,1,0,0}; int dy[]={0,0,-1,1}; int n,a[35][35]; void dfs(int x,int y){ if(x<0||x>n+1||y<0||y>n+1||a[x][y]!=0) return;//越界或者已经走过则返回 a[x][y]=2;// 标记 for(int i=0;i<4;i++) dfs(x+dx[i],y+dy[i]);//向四个方向继续前进 } int main(){ cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) cin>>a[i][j]; }//输入 dfs(0,0); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) cout<<abs(a[i][j]-2)<<" ";//看到其他dalao用两个数组觉得太麻烦(懒),所以想到了用一个数组输出的技巧 cout<<endl;//输出 } }
- 1
信息
- ID
- 163
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 24
- 已通过
- 16
- 上传者