2 条题解
-
2
#include<bits/stdc++.h> using namespace std; int n,b[710][710],sum; char a[710][710]; int nextx[8]={-1,0,1,-1,1,-1,0,1}; int nexty[8]={-1,-1,-1,0,0,1,1,1}; void f(int x,int y,int step){ if(a[x][y]=='1'&&step==0) { sum++; } if(a[x][y]=='1'){ for(int i=0;i<8;i++){ int nx=x+nextx[i]; int ny=y+nexty[i]; if(nx<1||nx>n||ny<1||ny>n) continue; if(b[nx][ny]==0){ b[nx][ny]=1; f(nx,ny,1); } } } } int main(){ cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(b[i][j]==0){ b[i][j]=1; f(i,j,0); } } cout<<sum; }
-
1
#include<bits/stdc++.h> using namespace std; struct note { long long x,y,num; }; char mi[1000][1000]; long long n,m; long long k=0; long long w,e; long long idx[8]= {1,1,1,0,0,-1,-1,-1}; long long idy[8]= {1,-1,0,1,-1,-1,0,1}; void bfs() { queue <note> qq; note t= {w,e,1}; qq.push(t); while(!qq.empty()) { note t1=qq.front(); qq.pop(); for(long long i=0; i<8; i++) { long long nx=t1.x+idx[i]; long long ny=t1.y+idy[i]; if(nx>=0&&nx<n&&ny>=0&&ny<m); { if(mi[nx][ny]=='1') { note t2={nx,ny,t1.num+1}; qq.push(t2); mi[nx][ny]='0'; } } } } k++; } int main() { cin>>n; for(long long i=0; i<n; i++) { for(long long j=0; j<n; j++) { cin>>mi[i][j]; } } for(long long i=0; i<n; i++) { for(long long j=0; j<n; j++) { if(mi[i][j]=='1') { w=i; e=j; bfs(); } } } cout<<k; }
- 1
信息
- ID
- 1064
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 163
- 已通过
- 39
- 上传者